0

此 SO 回复中描述的 OAuth2 的正常流程如下:

  • 使用访问令牌发送 API 请求
  • 如果访问令牌无效,请尝试使用刷新令牌对其进行更新
  • 如果刷新请求通过,更新访问令牌并重新发送初始 API 请求
  • 如果刷新请求失败,要求用户重新认证

这对于大多数 API 调用来说都很好,但我想知道一件事:身份验证。

当用户尝试使用他们最喜欢的服务登录我喜欢的新 web 应用程序时,我应该使用他们的刷新令牌(或在 OAuth1 的情况下缓存的访问令牌)尝试登录,还是应该总是去获取一个新的令牌来自服务提供商(Google、Facebook 等)并丢弃存储的访问和刷新令牌?

4

1 回答 1

0

用户身份验证和 OAuth 2.0 是两个不同的东西。差异在: http: //oauth.net/articles/authentication/中有详细说明。即使在 OAuth 2.0 之上构建用户身份验证/SSO 协议 - 这是 OpenID Connect 所做的以及一些特定于供应商的实现 -refresh_token仍然始终适用于access_token非用户身份验证事件或身份令牌。

您不能单独使用刷新令牌来刷新用户的登录会话,因为需要通过浏览器与用户进行一些交互(可能是主动的,也可能是被动的)以确认用户(仍然)存在。

要刷新用户的登录会话,您将始终必须重定向到身份提供者并获取新的身份验证信息。请注意,该交互可能还会为您提供一个新的刷新令牌,可用于刷新访问令牌。

于 2015-11-05T10:35:58.747 回答