【发布时间】:2018-02-23 00:29:16
【问题描述】:
在通过提供商进行身份验证后,应用程序通常会代表用户同时接收 ID 令牌和访问令牌。现在看来有两种方法可以断言用户是谁。
- 验证 ID 令牌,然后读取 ID 令牌。
- 将访问令牌传递给 userinfo 端点并读取 JSON 响应。
这两种方法似乎都可以接受,但在某些情况下应该使用其中一种吗?
【问题讨论】:
标签: security oauth-2.0 openid-connect
在通过提供商进行身份验证后,应用程序通常会代表用户同时接收 ID 令牌和访问令牌。现在看来有两种方法可以断言用户是谁。
这两种方法似乎都可以接受,但在某些情况下应该使用其中一种吗?
【问题讨论】:
标签: security oauth-2.0 openid-connect
如果您拥有两个令牌并且 ID 令牌包含您需要的所有信息,您可以使用任何一种方式。以下是我想到的一些区别:
【讨论】:
除了技术差异之外,还有语义差异:id_token 和其中的信息代表并标识了经过身份验证的用户。该用户“在场”并登录到应用程序。
access_token 和从 userinfo 端点返回的信息表示有关向呈现它的实体颁发访问令牌的用户的信息。该用户不需要“在场”或登录(不再)。
id_token 通常是“一次性使用”,access_token 通常可以在短时间内使用。
现在,如果用户使用 OpenID Connect 登录时同时发出和接收两个令牌,则两者会重叠。
【讨论】: