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的单点登录。