马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
×
1. 环境说明
1.1 背景
<!-- 说明集成的目的,所集成软件的优势,用于取代 GitLab 的哪部分功能 -->
Okta 是一家提供身份验证和访问管理解决方案的公司。它为企业提供了一个统一的身份验证平台,用于管理用户身份、访问权限和多个应用程序的单一登录。
1.2 资源清单
类型 |
版本 |
运行方式 |
备注 |
操作系统 |
Ubuntu 20.04 LTS |
云服务器 |
|
GitLab |
16.1.0-jh |
Omnibus |
<!-- <version-release> --> |
Okta |
Uknonw |
SaaS |
https://www.okta.com/ |
1.3 前置条件
- GitLab 实例正常运行并可以通过 HTTPS 访问
- 已注册 Okta 管理员账户并可正常登录
1.4 风险提示
- 软件集成过程会修改 GitLab 服务端配置文件,请提前做好配置备份。
- 集成过程中会执行重新配置等导致服务中断的风险性操作。
- 软件集成后可能会影响原有功能的使用方式。
- 正式应用于生产环境前,请在测试环境中做好充分测试。
1.5 免责声明
2. 配置集成
- 提示:以下操作会引起系统服务终端 1~2 分钟,请谨慎操作!<!-- 在任何有风险性的章节前需要添加提示 -->
<!-- 配置顺序根据实际进行调整 -->
2.1 集成功能说明
<!-- 描述集成后的功能优势、劣势以及使用场景等 -->
Okta 配置集成后即可通过 SSO 的方式更快捷的登录极狐GitLab.
2.2 Okta配置
<!-- 可以添加仅试用于本章节的参考 或者 提示 -->
2.2.1 Applications配置
-
登录 Okta,转到 管理员 页面操作
-
侧边栏点击 Applications > Applications
-
选择 Create App Integration, 选择 SAML 2.0
-
输入App name,使用\<Domain>即可(也可自定义)
-
点击 Next
-
设置 SAML Settings
General
- Single sign-on URL: https://\<domain>/users/auth/saml/callback
- Audience URI (SP Entity ID): https://\<domain>
- Default RelayState: \<NO VALUE>
- Name ID format: Transient
- Application username: Okta username
- Update application username on: Create and update
Attribute Statements (optional)
Name |
Name Format |
Value (通过下拉列表选择) |
first_name |
Basic |
user.firstName |
last_name |
Basic |
user.lastName |
email |
Basic |
user.email |
Group Attribute Statements (optional)
Name |
Name Format |
Filter |
Groups |
Unspecified |
Starts with: Regexp:.* |
-
点击 Next
-
Are you a customer or partner?,选择I'm an Okta customer adding an internal app
-
App type,选择 This is an internal app that we have created
-
点击 Finish
2.2.2 Assignments配置
- 基于以上页面,选择 Assignments
- 选择 Assign,选择 Assign to People
- 选择列表中的用户,点击 Assign > Save and Go Back > Done
- 再次选择 Assign,选择 Assign to Groups
- 选择列表中的群组,点击 Assign > Save and Go Back > Done
2.3 GitLab配置
<!-- 可以添加仅试用于本章节的参考 或者 提示 -->
-
确认实例已经配置 HTTPS 访问
-
配置文件 /etc/gitlab/gitlab.rb 中添加如下配置:
# 如果参数值包含其他,直接追加 'saml' 即可
gitlab_rails['omniauth_enabled'] = true # 开启 SSO 集成
gitlab_rails['omniauth_allow_single_sign_on'] = ['saml'] # 添加 SAML LDP
gitlab_rails['omniauth_block_auto_created_users'] = true # 开启用户自动创建审核
gitlab_rails['omniauth_auto_link_saml_user'] = true # 开启用户关联(通过 email 关联)
-
获取 Omniauth_providers 相关参数值
- 转到 Okta 管理员页面
- 侧边栏选择 Applications > Applications
- 选择新创建的Application(点击程序名)
- 跳转到 Application 页面后,点击 General
- 查看 SAML Settings
- Single Sign On URL as assertion_consumer_service_url
- 在 Application 页面,点击 Sign On
- 展开 Settings > Sign on methods > SAML 2.0
- 展开 More details
- Sign on URL as idp_sso_target_url
- 展开 Certificate finterprint
- SHA1(formatted) as idp_cert_fingerprint
-
-
配置文件 /etc/gitlab/gitlab.rb 中添加提供商:
gitlab_rails['omniauth_providers'] = [
{
name: "saml", # 这里值需要在参数 omniauth_allow_single_sign_on 列表中
label: "Okta", # 名字任意
args: {
# 回调 url, eg: https://<gitlab domain>/users/auth/saml/callback
assertion_consumer_service_url: "General - <Single Sign On URL>",
# 格式化的(冒号分隔) SHA1 指纹,不区分大小写, eg: 1a:3c:4d:....
idp_cert_fingerprint: "Sign On - <SHA1(formatted)>",
# 通常以 sso/saml 结尾, eg: https://xxx.okta.com/app/xxx/sso/saml
idp_sso_target_url: "Sign On - <Sign on URL>",
# gitlab external_url using https
issuer: "https://<gitlab external url>",
# 此参数保持默认
name_identifier_format: "urn:oasis:names:tc:SAML:2.0:nameid-format:persistent",
}
}
]
-
刷新配置
sudo gitlab-ctl reconfigure
|