GitLab支持SAML协议的参考官方文档配置: https://docs.gitlab.com/ee/integration/saml.html
Gitlab本地部署可以参考 https://www.cnblogs.com/straycats/p/7637373.html 版本号: gitlab-ce-12.2.1-ce.0.el7.x86_64.rpm
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中创建一个SAML应用
在添加应用页面,选择saml应用点击添加
添加SigningKey
创建SAML应用 配置参数可以先随意填写,之后还要进行修改
二、修改gitlab配置文件
在修改配置时请将下面的注释删除,避免gitlab配置格式的影响
vim /etc/gitlab/gitlab.rb
#允许用户使用SAML进行注册而无需手动创建账户
gitlab_rails['omniauth_enabled'] = true
gitlab_rails['omniauth_allow_single_sign_on'] = ['saml']
gitlab_rails['omniauth_block_auto_created_users'] = false
#设置自动将SAML用户与现有的GitLab用户连接
gitlab_rails['omniauth_auto_link_saml_user'] = true
#添加提供程序配置
gitlab_rails['omniauth_providers']=[
{
name: 'saml',
args: {
#gitlab的断言地址,标绿部分替换为gitlab实际的地址
assertion_consumer_service_url:'http://192.168.20.178/users/auth/saml/callback',
#证书的指纹信息,在IDaaS配置SAML应用后获取
idp_cert_fingerprint:'a9:68:15:e2:35:3f:1e:de:ea:ac:26:62:a3:88:aa:9c:62:4e:e7:8a',
#固定格式,http://192.168.20.173:8080为IDaaS域名地址,lin1121samlIDaaS中对应的saml应用ID,请根据实际信息进行调整
idp_sso_target_url:'http://192.168.20.173:8080/enduser/api/application/plugin_saml/lin1121saml/sp_sso’,
#一般为固定格式,可以在gitlab登录页获取
issuer:'http://192.168.20.178/users/auth/saml',
name_identifier_format:'urn:oasis:names:tc:SAML:2.0:nameid-format:persistent',
},
#标签,可以根据需要随意更改
label:'IDaaS'
}]
各参数具体获取方法如下
assertion_consumer_service_url获取方式如下:



idp_cert_fingerprint获取方式如下:
1、导出证书
在添加应用界面,选择saml应用模板,点击添加应用。选择之前创建的SigningKey,点击导出
2、查看指纹。
打开证书,点击详细信息-指纹获取指纹。每两个数字后面加上一个冒号 : ,跟文档的格式保持一致。
每两个数字后面加上一个冒号“:”,否则将报错。

idp_sso_target_url获取方式
说明IDaaS域名地址可以在云盾IDaaS管理控制台获取。
issuer获取方式如下:
修改完配置之后,在命令行中输入以下命令重启gitlab,刷新配置信息
gitlab-ctl stop
gitlab-ctl reconfigure
gitlab-ctl start
三、修改saml应用配置
修改saml应用配置如下

四、设置Gitlab对应账户标识(IDaaS中的子账户)
使用root账户登录,为账户添加账户标识

五、IDaaS添加子账户
点击应用详情,查看应用子账户。

点击添加账户关联

主账户为IDaas中的账户,子账户为刚刚Gitlab中设置的 identity.

完成以上步骤,即可单点登录到gitlab。
FAQ
1. 显示下图报错

gitLab的identifier和应用下设置的子账户需要一致。
2. 使用同步进入gitlab的账户进行登录,提示邮箱不能为空。
方法1:绑定主子账户时,子账户直接使用用户名,不使用邮箱;
方法2:在IDaaS中,修改SAML应用添加邮箱参数
