本文为您介绍如何在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中。