本文为您介绍如何在IDaaS中通过SAML协议,配置Gitlab单点登录。
应用简介
GitLab是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的Web服务。
GitLab支持多种SSO协议,本文档介绍如何通过SAML协议对接GitLab。 GitLab SAML官网文档:GitLaB官网文档。
操作步骤
一、配置IDaaS应用
请管理员前往
,搜索到GitLab SAML应用。确认应用名后,即可完成添加流程。创建应用成功后,会自动来到SSO单点登录配置页。
配置SSO
您只需要将GitLab的服务地址填写进来,注意服务地址不要以/结尾
其他选项保持默认,点击保存即可完成全部SSO配置。
应用账户:默认使用IDaaS账户名作为应用登录标识。GitLab支持自动创建账户,单点登录时,若GitLab中不存在指定账户,则会直接创建出来。若希望灵活配置,请参考单点配置通用说明-应用账户进行配置。授权范围:默认全员可用。若希望指定可访问应用的IDaaS账户,请参考单点配置通用说明-应用账户进行配置。
配置页面下方,包含了一系列GitLab完成配置所需要的参数。
二、配置Gitlab
根据GitLab官网文档,您需要在部署环境中编辑Gitlab配置文件。
# 若您使用 Omnibus 安装 Gitlab,请使用命令:
sudo editor /etc/gitlab/gitlab.rb
#若您使用独立安装 Gitlab,请参考命令:
cd /home/git/gitlab
sudo -u git -H editor config/gitlab.yml
将如下信息补充进配置文件(参数按照onmibus安装方式提供。独立安装的参数与其一致,但格式不同,详情参考GitLab官网文档):
gitlab_rails['omniauth_enabled'] = true
gitlab_rails['omniauth_allow_single_sign_on'] = ['saml']
gitlab_rails['omniauth_block_auto_created_users'] = false
gitlab_rails['omniauth_auto_link_saml_user'] = true
gitlab_rails['omniauth_providers']=[
{
name: 'saml',
args: {
name: 'saml',
assertion_consumer_service_url:'http://gitlab.example.com/users/auth/saml/callback',
issuer:'http://gitlab.example.com/users/auth/saml',
idp_cert_fingerprint:'23:f8:77:03:fc:69:4c:da:ac:7e:4a:42:5a:87:5a:b3:ad:a8:d9:df',
idp_sso_target_url:'https://example.aliyunidaas.com/login/app/app_mivpoqqmz7zrslxcmlyxa25me4/saml2/sso',
name_identifier_format:'urn:oasis:names:tc:SAML:2.0:nameid-format:persistent',
attribute_statements: {
nickname: ['username'],
},
},
label:'EIAM2.0'
}
]
如上参数中大部分无需调整,仅有几项配置需要修改:
参数名 | 说明 | 示例 |
args.assertion_consumer_service_url | 填写GitLab的断言消费地址,一般是GitLab服务地址后加 /users/auth/saml/callback | http://gitlab.example.com/users/auth/saml/c****ack |
args.issuer | 填写GitLab的身份标识,一般是 GitLab服务地址后加 /users/auth/saml | http://gitlab.****ple.com/users/auth/saml |
args.idp_sso_target_url | IdP SSO地址,从IDaaS获得 | https://example.aliyunidaas.com/login/app/app_mi****qmz7zrslxcmlyxa25me4/saml2/sso |
args.idp_cert_fingerprint | Idp公钥证书指纹。请您下载证书后,通过检查证书属性,获取证书SHA1指纹。可能获取到的指纹信息并未按照冒号 : 区隔,您可能需要手动处理。 | 23:f8:77:03:fc:69:4c:da:ac:7e:4a:42:5a:87:5a:b3:ad:a8:d**** |
配置完成后,使用命令重启Gitlab。
# 若您使用 Omnibus 安装 Gitlab,请使用命令重新加载配置文件并重启服务:
sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart
# 若您使用独立安装 Gitlab,请参考命令:
# 运行 systemd 的系统
sudo systemctl restart gitlab.target
# 允许 SysV init 的系统
sudo service gitlab restart
重启后,在Gitlab登录页下方,应出现使用阿里云IDaaS账户登录。
配置完成。
三、尝试SSO
您已经可以尝试GitLab SSO。
本文中GitLab采用SAML协议,既支持IdP发起(即从阿里云IDaaS发起)SSO,也支持SP发起(即从GitLab发起)SSO流程。
IdP发起
请用已授权使用GitLab的IDaaS账户,登录到IDaaS门户页,单击页面上GitLab图标,发起SSO。
SP发起
请在匿名浏览器中,打开Gitlab登录页,单击阿里云 IDaaS,则会跳转到IDaaS进行登录。如果用户尚未登录IDaaS ,则IDaaS会引导用户进行登录 。
IDaaS验证用户身份通过后,将直接登录到GitLab中。