Gitlab 认证机制


前言
睿云的持续交付平台WiseBuild项目中实现了通过GitLab API获取项目资源,完成了GitLab的集成。其中关于GitLab的OAuth2 Application认证机制挺有意思,下面就简单的梳理一下知识点。


GitLab API

b646e22575dc03555c0ca7afa7f6b313.jpg


由图我们可以看出调用API需要带上token,下面主要聊下Private Token和Access Token。

API文档:https://docs.gitlab.com/ee/api/projects.html

Token获取

获取GitLab的Private Token

2238819e3119c5c001d7c239ecbe7bef.jpg


如上图,点击Profile Settings-选择Account可以看到Private Token。

GitLab为每个用户都分配了一个Private Token,通过该token能获取到该用户下能看到的全部项目资源。

但是,往往在项目开发中,每个人看到项目资源的权限是不同的,也就是说GitLab为每个人分配的Private Token是不一样的。因此需要一种能根据每个用户动态验证生产的Token,那就是Access Token了。

获取Access Token流程

9e321c0175f464d65b46695e305677f9.jpg


如上图,获取Acess Token需要经过的步骤如下:
  • 带上clientId和回调地址,请求GitLab的auth认证Api。
  • 跳转登录界面进行登录。
  • 确认授权。
  • 回调函数可以获取到GitLab返回的code。
  • 遵循Oauth2认证机制,带上:ClientId、code、secret、RedirectURI。
  • 获取到Access Token。


获取Access Token的操作步骤

生成ClientId、Secret以及配置回调URL。
b137115b86bd89e944b17a745df8a495.jpg


如上图,输入:name和Redirect,点击save application创建一个Application。

13acf6914e324b4196d175d474d98b05.jpg


如上图生成的Application id、secret用于Oauth2认证。

java实现OAuth2认证

引入OAuth2 client依赖 。

fdbc442d5d41091bab9798bf15fac929.jpg


调用OAuth2 client函数调用GitLab的tokenAPI (http://git.xxx.com/oauth/token),获取Access Token 。

8b36a289f6b87d913133f26f0e4b2f92.jpg


e112176ebf4c54265fe9aef61a8c47b2.jpg


带上Access Token 获取GitLab的projects资源

获取project的API:

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

1df1e525f06c3d3a60fa44bdae2bc467.jpg


能动态授权,获取到GitLab资源信息,这样就可以在项目中轻松的集成GitLab了。

关于GitLab认证机制的文档
https://docs.gitlab.com/ce/api/oauth2.html

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

01e5c73f387ac132cdc51b8d15276a49.jpg

0 个评论

要回复文章请先登录注册