睿雲的持續交付平臺WiseBuild項目中實現了經過GitLab API獲取項目資源,完成了GitLab的集成。其中關於GitLab的OAuth2 Application認證機制挺有意思,下面就簡單的梳理一下知識點。html
由圖咱們能夠看出調用API須要帶上token,下面主要聊下Private Token和Access Token。java
API文檔:https://docs.gitlab.com/ee/api/projects.htmlgit
獲取GitLab的Private Tokenapi
如上圖,點擊Profile Settings-選擇Account能夠看到Private Token。微信
GitLab爲每一個用戶都分配了一個Private Token,經過該token能獲取到該用戶下能看到的所有項目資源。app
可是,每每在項目開發中,每一個人看到項目資源的權限是不一樣的,也就是說GitLab爲每一個人分配的Private Token是不同的。所以須要一種能根據每一個用戶動態驗證生產的Token,那就是Access Token了。函數
獲取Access Token流程gitlab
如上圖,獲取Acess Token須要通過的步驟以下:ui
帶上clientId和回調地址,請求GitLab的auth認證Api。spa
跳轉登陸界面進行登陸。
確認受權。
回調函數能夠獲取到GitLab返回的code。
遵循Oauth2認證機制,帶上:ClientId、code、secret、RedirectURI。
獲取到Access Token。
獲取Access Token的操做步驟
生成ClientId、Secret以及配置回調URL。
如上圖,輸入:name和Redirect,點擊save application建立一個Application。
如上圖生成的Application id、secret用於Oauth2認證。
java實現OAuth2認證
引入OAuth2 client依賴 。
調用OAuth2 client函數調用GitLab的tokenAPI (http://git.xxx.com/oauth/token),獲取Access Token 。
帶上Access Token 獲取GitLab的projects資源
獲取project的API:
http://git.xxx.com/api/v3/projects?access_token=%s
能動態受權,獲取到GitLab資源信息,這樣就能夠在項目中輕鬆的集成GitLab了。
關於GitLab認證機制的文檔
https://docs.gitlab.com/ce/api/oauth2.html
https://docs.gitlab.com/ee/api/projects.html
微信搜索:Wise2C | 一個有趣的公衆號