Help us learn about your current experience with the documentation. Take the survey.
GitLab 作为 OpenID Connect 身份提供者
- Tier: Free, Premium, Ultimate
- Offering: GitLab.com, GitLab Self-Managed
您可以将 GitLab 用作 OpenID Connect (OIDC) 身份提供者,以访问其他服务。 OIDC 是一个身份层,执行与 OpenID 2.0 相同的许多任务,但它对 API 友好, 并且可以被原生和移动应用程序使用。
客户端可以使用 OIDC 来:
- 基于 GitLab 执行的身份验证来验证最终用户的身份。
- 以可互操作和类 REST 的方式获取最终用户的基本配置文件信息。
您可以为 Rails 应用程序使用 OmniAuth::OpenIDConnect, 并且还有许多其他可用的 客户端实现。
GitLab 使用 doorkeeper-openid_connect gem 来提供 OIDC 服务。有关更多信息,请参阅
doorkeeper-openid_connect 仓库。
为 OAuth 应用程序启用 OIDC
要为 OAuth 应用程序启用 OIDC,您需要在应用程序设置中选择 openid 范围。
有关更多信息,请参阅 将 GitLab 配置为 OAuth 2.0 身份验证提供者。
设置发现
如果您的客户端可以从发现 URL 导入 OIDC 设置,GitLab 提供了访问此信息的端点:
- 对于 GitLab.com,使用
https://gitlab.com/.well-known/openid-configuration。 - 对于 GitLab 自托管版,使用
https://<your-gitlab-instance>/.well-known/openid-configuration
共享信息
以下用户信息与客户端共享:
| 声明 | 类型 | 描述 | 包含在 ID 令牌中 | 包含在 userinfo 端点中 |
|---|---|---|---|---|
sub |
string |
用户的 ID | 是 | 是 |
auth_time |
integer |
用户上次身份验证的时间戳 | 是 | 否 |
name |
string |
用户的完整姓名 | 是 | 是 |
nickname |
string |
用户的 GitLab 用户名 | 是 | 是 |
preferred_username |
string |
用户的 GitLab 用户名 | 是 | 是 |
email |
string |
用户的主要电子邮件地址 | 是 | 是 |
email_verified |
boolean |
用户的电子邮件地址是否已验证 | 是 | 是 |
website |
string |
用户网站的 URL | 是 | 是 |
profile |
string |
用户 GitLab 个人资料的 URL | 是 | 是 |
picture |
string |
用户 GitLab 头像的 URL | 是 | 是 |
groups |
array |
用户所属组的路径,无论是直接成员还是通过祖先组。 | 否 | 是 |
groups_direct |
array |
用户直接所属组的路径。 | 是 | 否 |
https://gitlab.org/claims/groups/owner |
array |
用户具有所有者角色的直接所属组的名称 | 否 | 是 |
https://gitlab.org/claims/groups/maintainer |
array |
用户具有维护者角色的直接所属组的名称 | 否 | 是 |
https://gitlab.org/claims/groups/developer |
array |
用户具有开发者角色的直接所属组的名称 | 否 | 是 |
只有当应用程序有权访问 email 范围和用户的公开电子邮件地址时,才会包含 email 和 email_verified 声明。
所有其他声明都可以从 OIDC 客户端使用的 /oauth/userinfo 端点获取。