Gitlab 認證機制

前言

睿雲的持續交付平臺WiseBuild項目中實現了經過GitLab API獲取項目資源,完成了GitLab的集成。其中關於GitLab的OAuth2 Application認證機制挺有意思,下面就簡單的梳理一下知識點。html

GitLab API

Gitlab 認證機制

由圖咱們能夠看出調用API須要帶上token,下面主要聊下Private Token和Access Token。java

API文檔:https://docs.gitlab.com/ee/api/projects.htmlgit

Token獲取

獲取GitLab的Private Tokenapi

Gitlab 認證機制

如上圖,點擊Profile Settings-選擇Account能夠看到Private Token。微信

GitLab爲每一個用戶都分配了一個Private Token,經過該token能獲取到該用戶下能看到的所有項目資源。app

可是,每每在項目開發中,每一個人看到項目資源的權限是不一樣的,也就是說GitLab爲每一個人分配的Private Token是不同的。所以須要一種能根據每一個用戶動態驗證生產的Token,那就是Access Token了。函數

獲取Access Token流程gitlab

Gitlab 認證機制

如上圖,獲取Acess Token須要通過的步驟以下:ui

  • 帶上clientId和回調地址,請求GitLab的auth認證Api。spa

  • 跳轉登陸界面進行登陸。

  • 確認受權。

  • 回調函數能夠獲取到GitLab返回的code。

  • 遵循Oauth2認證機制,帶上:ClientId、code、secret、RedirectURI。

  • 獲取到Access Token。

獲取Access Token的操做步驟

生成ClientId、Secret以及配置回調URL。

Gitlab 認證機制

如上圖,輸入:name和Redirect,點擊save application建立一個Application。

Gitlab 認證機制

如上圖生成的Application id、secret用於Oauth2認證。

java實現OAuth2認證

引入OAuth2 client依賴 。

Gitlab 認證機制

調用OAuth2 client函數調用GitLab的tokenAPI (http://git.xxx.com/oauth/token),獲取Access Token 。

Gitlab 認證機制

Gitlab 認證機制

帶上Access Token 獲取GitLab的projects資源

獲取project的API:

http://git.xxx.com/api/v3/projects?access_token=%s

Gitlab 認證機制

能動態受權,獲取到GitLab資源信息,這樣就能夠在項目中輕鬆的集成GitLab了。

關於GitLab認證機制的文檔

https://docs.gitlab.com/ce/api/oauth2.html

https://docs.gitlab.com/ee/api/projects.html

01e5c73f387ac132cdc51b8d15276a49.jpg

微信搜索:Wise2C | 一個有趣的公衆號

相關文章
相關標籤/搜索