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 check-circle check-circle
auth_time integer 用户上次身份验证的时间戳 check-circle dotted-circle
name string 用户的完整姓名 check-circle check-circle
nickname string 用户的 GitLab 用户名 check-circle check-circle
preferred_username string 用户的 GitLab 用户名 check-circle check-circle
email string 用户的主要电子邮件地址 check-circle check-circle
email_verified boolean 用户的电子邮件地址是否已验证 check-circle check-circle
website string 用户网站的 URL check-circle check-circle
profile string 用户 GitLab 个人资料的 URL check-circle check-circle
picture string 用户 GitLab 头像的 URL check-circle check-circle
groups array 用户所属组的路径,无论是直接成员还是通过祖先组。 dotted-circle check-circle
groups_direct array 用户直接所属组的路径。 check-circle dotted-circle
https://gitlab.org/claims/groups/owner array 用户具有所有者角色的直接所属组的名称 dotted-circle check-circle
https://gitlab.org/claims/groups/maintainer array 用户具有维护者角色的直接所属组的名称 dotted-circle check-circle
https://gitlab.org/claims/groups/developer array 用户具有开发者角色的直接所属组的名称 dotted-circle check-circle

只有当应用程序有权访问 email 范围和用户的公开电子邮件地址时,才会包含 emailemail_verified 声明。 所有其他声明都可以从 OIDC 客户端使用的 /oauth/userinfo 端点获取。