Gitlab对接(OAuth2)

Gitlab常用命令:

# 启动Gitlab
gitlab-ctl start
# 停止Gitlab
gitlab-ctl stop
# 重启Gitlab
gitlab-ctl restart
# 重新加载Gitlab配置
gitlab-ctl reconfigure
# 查看状态
gitlab-ctl status
# 查看所有的logs
gitlab-ctl tail
		

一、在IDaaS中创建一个OAuth2应用

点击导航栏中点击添加应用,选择OAuth2应用模板

添加应用需要填写两个参数,Redirect URI和GrantType

Redirect URI填写格式如下:Gitlab_url/users/auth/IDaaS/callback。

其中Gitlab_url为gitlab服务器的地址,IDaaS为在Gitlab服务器配置文件里配置的标识。

GrantType选择Authorization_Code(授权码模式)

二、修改gitlab配置文件

(在修改配置时请将下面的注释删除,避免gitlab配置格式的影响)

vim /etc/gitlab/gitlab.rb

#允许用户使用oauth2进行单点登录
gitlab_rails['omniauth_enabled'] = true
gitlab_rails['omniauth_allow_single_sign_on'] = ['oauth2_generic']
gitlab_rails['omniauth_block_auto_created_users'] = false
#添加提供程序配置
gitlab_rails['omniauth_providers'] = [     
 { 
       'name' => 'oauth2_generic', 
       #IDaaS中OAuth2应用的client_id和client_secret
        'app_id' => 'oauth_client_app_id',
        'app_secret' => 'oauth_client_app_secret',
        'args' => {
              client_options: {
                #IDaaS服务器的地址
                'site' => 'https://your_oauth_server',
                #IDaaS提供的获取用户信息的接口
                 'user_info_url' => '/api/bff/v1.2/commons/user_details',
                #IDaaS提供的获取token的地址
                'token_url' => '/oauth/token'
              },
          user_response_structure: {
             root_path: ['data', 'udAccountInformation'],
             attributes: { nickname: 'username' }
           },
          #标签名,可以随意填写,但需要和创建OAuth2时填写的标识统一
          name: 'IDaaS',
           strategy_class: "OmniAuth::Strategies::OAuth2Generic"
     } 
 }]

oauth_client_app_id和oauth_client_app_secret获取方式如下:

选择步骤一创建的OAuth2应用,点击查看详情

修改完配置之后,在命令行中输入以下命令重启gitlab,刷新配置信息。

gitlab-ctl stop
gitlab-ctl reconfigure
gitlab-ctl start
		

重启完成之后,可以在gitlab登录界面如下:

三、账户关联

用户登录gitlab之后,在setting-Account 中点击Connect进行账户关联

跳转到IDaaS的登录界面,使用IDaaS的账户进行登录

登录成功之后页面会切换回Gitlab的页面,并在页面上方出现一条提示信息

通过以上步骤,完成使用OAuth2应用模板实现Gitlab的单点登录。

阿里云首页 应用身份服务 相关技术圈