阿里云首页 应用身份服务

Gitlab对接(SAML)

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应用

  1. 在添加应用页面,选择saml应用点击添加

  2. 添加SigningKey

  3. 创建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、查看指纹。

打开证书,点击详细信息-指纹获取指纹。每两个数字后面加上一个冒号 : ,跟文档的格式保持一致。

警告

每两个数字后面加上一个冒号“:”,否则将报错。

修改完配置之后,在命令行中输入以下命令重启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应用添加邮箱参数

1213