从哪里获取 Gitlab 的 OpenID ID Token?

Where to get Gitlab's OpenID ID Token?

使用 Gitlab 为 OpenID 范围提供访问令牌,即

https://gitlab.com/oauth/userinfo?access_token=<bearer token> 

return信息量有限,例如用户名、群组等。但是,它不会 return 用户的电子邮件地址。
Gitlab documentation 表示:

The claims sub, sub_legacy, email and email_verified are included in the ID token, all other claims are available from the /oauth/userinfo endpoint used by OIDC clients.

给定 AccessToken - 我如何检索 ID 令牌

*这是一个已知/已讨论的问题 cf. here

这完全取决于您在首次向 GitLab 发送初始身份验证请求时要求的范围

您需要请求 email 范围才能取回该信息,您应该同时取回 ID-token获得第一个 access-token.

的时间
  1. 通过授权请求获取代码时,需要指定范围,范围需要包括openid,read_user,profile,email.

  2. 用第一步得到的code兑换token时,可以return到access_tokenid_token.

  3. 当第二步得到的access_token用于获取用户信息时,可以return用户的e-mail.

参考上面使用范围的解释:

  • openid:授予使用 OpenID Connect 向 GitLab 进行身份验证的权限。还授予对用户个人资料和组成员资格的只读访问权限。
  • read_user:通过 /user API 端点授予对经过身份验证的用户配置文件的只读访问权限,其中包括用户名、public 电子邮件和全名。还授予对 /users.
  • 下的只读 API 端点的访问权限
  • profile:使用 OpenID Connect 授予对用户配置文件数据的只读访问权限。
  • email:使用 OpenID Connect 授予对用户主电子邮件地址的只读访问权限。