文档

GitLab SSO By SAML

更新时间:

本文为您介绍如何在 IDaaS 中通过 SAML 协议,配置 Gitlab 单点登录。

应用简介

GitLab 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的Web服务。

说明

GitLab 支持多种 SSO 协议,本文档介绍如何通过 SAML 协议对接 GitLab。 GitLab SAML 官网文档:https://docs.gitlab.com/ee/integration/saml.html

操作步骤

一、配置 IDaaS 应用

请管理员前往【应用】【应用市场】,搜索到 GitLab 应用模板。确认应用名后,即可完成添加流程。

image.png

创建应用成功后,会自动来到 SSO 单点登录配置页。

配置 SSO

您只需要将 GitLab 的服务地址填写进来,注意服务地址不要以“/”结尾image.png

其他选项保持默认,点击【保存】即可完成全部 SSO 配置。

说明

应用账户:默认使用 IDaaS 账户名作为应用登录标识。GitLab 支持【自动创建账户】,单点登录时,若 GitLab 中不存在指定账户,则会直接创建出来。 若希望灵活配置,请参考单点配置通用说明 - 应用账户进行配置。 授权范围:默认全员可用。若希望指定可访问应用的 IDaaS 账户,请参考单点配置通用说明 - 应用账户进行配置。

配置页面下方,包含了一系列 GitLab 完成配置所需要的参数。image.png

二、配置 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_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 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。

image.png

SP 发起

请在匿名浏览器中,打开 Gitlab 登录页,点击【阿里云 IDaaS】,则会跳转到 IDaaS 进行登录。如果用户尚未登录 IDaaS ,则 IDaaS 会引导用户进行登录 。

image.png

IDaaS 验证用户身份通过后,将直接登录到 GitLab 中。

  • 本页导读 (0)
文档反馈