【问题标题】:Where to get Gitlab's OpenID ID Token?从哪里获得 Gitlab 的 OpenID ID 令牌?
【发布时间】:2021-07-15 22:00:12
【问题描述】:

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

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

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

声明 sub、sub_legacy、email 和 email_verified 包含在 ID 令牌,所有其他声明都可从 /oauth/userinfo 获得 OIDC 客户端使用的端点。

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

*这是一个已知/讨论过的问题,参见 here

【问题讨论】:

    标签: oauth-2.0 gitlab openid-connect


    【解决方案1】:
    1. 通过授权请求获取代码时,需要指定作用域,作用域需要包含openid,read_user,profile,email

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

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

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

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

    【讨论】:

      【解决方案2】:

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

      您需要询问 email 范围以取回该信息,并且您应该在获得第一个 的同时取回 ID-token >访问令牌

      【讨论】:

      • 我怀疑我必须在范围内包含电子邮件。我只是不确定 OpenID 范围的描述方式。带有访问令牌的 ID 令牌非常简单,所以我希望/认为不是这样。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-07-17
      • 1970-01-01
      • 2021-11-30
      • 1970-01-01
      • 2021-01-25
      • 2021-05-29
      相关资源
      最近更新 更多