You need to enable JavaScript to run this app.
导航
GitLab SSO (SAML协议)
最近更新时间:2024.10.24 16:02:14首次发布时间:2024.10.24 16:02:14

GitLab支持多种 SSO 协议,本文档介绍如何在飞连通过 SAML 协议单点登录 GitLab。

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

配置 GitLab

本文以 Gitlab 配置文件操作为例,您也可以在 GitLab 群组的设置 > SAML SSO 页面配置相关参数。

  1. 在部署环境中执行如下命令编辑 Gitlab 配置文件,详细步骤请参见GitLab官网文档
# 若您使用 Omnibus 方式安装 Gitlab,请使用以下命令:
vim /etc/gitlab/gitlab.rb

# 若您使用独立安装 Gitlab,请参考以下命令:
cd /home/git/gitlab
sudo -u git -H editor config/gitlab.yml
  1. 移动到最后一行,添加如下信息。
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",
    label: "使用飞连登录",
    args: {
      assertion_consumer_service_url: "http(s)://{gitlab.example.com}/users/auth/saml/callback",
      idp_cert_fingerprint: "{fingerprint}",
      idp_sso_target_url: "https://feilian_host}:{portal_port}/api/idp/sso",
      issuer: "https://{gitlab.example.com}",
      name_identifier_format: "urn:oasis:names:tc:SAML:2.0:nameid-format:persistent"
    }
  }
]

以上配置文件适用于使用 Omnibus 方式安装 Gitlab的场景,如果是独立安装 Gitlab,配置文件的格式不一样,但参数一样,具体请参见GitLab官网文档
示例代码中的关键参数说明如下表所示。

配置项

说明

omniauth_block_auto_created_users

要允许您的用户使用 SAML 进行注册而无需先手动创建帐户,则可以设置为 false

omniauth_auto_link_saml_user

如果 SAML 用户的电子邮件地址匹配,您可以自动将 SAML 用户与现有的 GitLab 用户链接起来。

label

Gitlab 登录页显示的按钮名称。

assertion_consumer_service_url

GitLab HTTPS 端点。
请将配置文件示例代码中的{gitlab.example.com}替换为您实际的 GitLab 服务端地址。

idp_cert_fingerprint

IDP 公钥证书指纹,请通过以下步骤获取证书 SHA1 指纹:

  1. 通过https://{feilian_host}:{portal_port}/api/idp/metadata获取 Certificate 的值,其中{feilian-host}:{portal_port}请替换为飞连管理后台的域名/IP和端口。
    Image
  2. 单击SHA1指纹生成工具,在 X.509 cert 中输入获取的 Certificate 的值,单击 CALCULATE FINGERPRINT,在 Formatted FingerPrint 中获取 SHA1 指纹。
    Image

idp_sso_target_url

IDP SSO地址。配置文件示例代码中的{feilian-host}:{portal_port}请替换为飞连管理后台的域名/IP和端口。

issuer

填写 GitLab 的身份标识,请将配置文件示例代码中的{gitlab.example.com}替换为您实际的 GitLab 服务端地址。

  1. 配置完成后,执行如下命令重新加载配置文件并重启 GitLab。
若您使用 Omnibus 方式安装 Gitlab,请使用如下命令重新加载配置文件并重启服务:
sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart

# 若您使用独立安装 Gitlab,请参考如下命令重启 GitLab:
# 对于运行 systemd 的系统
sudo systemctl restart gitlab.target
# 对于允许 SysV init 的系统
sudo service gitlab restart

飞连管理后台创建应用
  1. 登录飞连管理后台。

  2. 在左侧导航栏,单击应用接入

  3. 应用接入页面,单击右上角的应用市场

  4. 添加新应用页面的筛选条件区域,搜索 GitLab 应用模板卡片。

  5. 搜索结果区域,单击该应用模版卡片,并在所选模板卡片的右下角,单击添加应用
    Image

  6. 填写应用信息页面,配置应用信息和应用功能并单击确定
    Image
    关键参数说明如下表所示。

    配置项

    说明

    应用名称

    自定义应用的名称。

    应用访问地址

    请填写 GitLab 的服务地址。

    协议类型

    本示例中请选择 SAML

    GitLab 唯一标识

    GitLab 应用在飞连租户内的唯一标识,自定义,保证租户内所有应用唯一,格式为https://gitlab.com/groups/<enterprise_name>
    <enterprise_name>请替换为 GitLab 上对应的 Group Name。

    GitLab 单点登录地址

    格式为https://gitlab.com/groups/<enterprise_name>/-/saml/callback
    <enterprise_name>请替换为 GitLab 上对应的 Group Name。

    应用网关

    应用网关的配置项说明,请参见添加应用

配置映射关系
  1. 登录飞连管理后台。

  2. 在左侧导航栏,单击应用接入

  3. 在应用列表中,单击对应应用的应用名称。

  4. 单击单点登录页签,单击映射关系右侧的编辑
    Image

  5. 单击添加映射,在字段下拉列表中单击底部的添加扩展字段
    Image

  6. 分别创建飞连字段和应用字段,字段的值如下表所示。
    Image

    配置项

    飞连字段的值

    应用字段的值

    字段 Key

    gitlab_username

    app_user_id

    字段名称

    GitLab Username

    NameID

    字段类型

    字符串

    字符串

  7. 添加飞连字段和应用字段的映射关系。
    Image