【问题标题】:ID token or /userinfo for Identity assertion用于身份断言的 ID 令牌或 /userinfo
【发布时间】:2018-02-23 00:29:16
【问题描述】:

在通过提供商进行身份验证后,应用程序通常会代表用户同时接收 ID 令牌和访问令牌。现在看来有两种方法可以断言用户是谁。

  1. 验证 ID 令牌,然后读取 ID 令牌。
  2. 将访问令牌传递给 userinfo 端点并读取 JSON 响应。

这两种方法似乎都可以接受,但在某些情况下应该使用其中一种吗?

【问题讨论】:

    标签: security oauth-2.0 openid-connect


    【解决方案1】:

    如果您拥有两个令牌并且 ID 令牌包含您需要的所有信息,您可以使用任何一种方式。以下是我想到的一些区别:

    • 无需访问其 OAuth2 服务器即可验证和读取 ID 令牌(如果您已在本地下载了其证书),这使其速度更快并且需要处理的错误更少 - 无需网络请求。
    • 如果用户信息经常更改,则 ID 令牌可能包含过时的数据,但几乎不会发生这种情况。
    • 可以撤销访问令牌(ID 令牌不能),所以如果您需要它,他们会做得更好。

    【讨论】:

      【解决方案2】:

      除了技术差异之外,还有语义差异:id_token 和其中的信息代表并标识了经过身份验证的用户。该用户“在场”并登录到应用程序。

      access_token 和从 userinfo 端点返回的信息表示有关向呈现它的实体颁发访问令牌的用户的信息。该用户不需要“在场”或登录(不再)。

      id_token 通常是“一次性使用”,access_token 通常可以在短时间内使用。

      现在,如果用户使用 OpenID Connect 登录时同时发出和接收两个令牌,则两者会重叠。

      【讨论】:

        猜你喜欢
        • 2017-10-11
        • 2015-09-14
        • 2020-10-15
        • 2017-12-23
        • 2015-12-24
        • 1970-01-01
        • 2019-06-28
        • 2018-07-27
        • 2016-01-23
        相关资源
        最近更新 更多