You need to enable JavaScript to run this app.
导航
GitLab SSO (SAML协议)
最近更新时间:2025.09.29 15:00:30首次发布时间: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 的值。

    注意

    在线工具要求提供完整的 PEM 格式证书。您在飞连元数据中复制的 Certificate 值是纯文本格式,需手动为其添加标准的页眉和页脚。请按如下格式示例粘贴证书内容:

    -----BEGIN CERTIFICATE-----
    [此处粘贴从飞连复制的 Certificate 值]
    -----END CERTIFICATE-----
    
  3. 单击 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