睿云的持续交付平台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 | 一个有趣的公众号