Oauth 仅撤销访问令牌

Oauth Revoke access token only

我使用 OAuth 2.0 在我的网站上登录用户。就像任何类型的网站一样,例如Google、体位法等。

我想知道是否有办法在用户注销时仅撤销访问令牌而不撤销刷新令牌。

我就是这样做的:

当用户登录时,我创建一个会话并获取访问令牌(如果用户是首次登录,则获取刷新令牌)。当用户注销时,我只是使会话无效,但访问令牌仍然有效。

当然,访问令牌会在一段时间后或用户再次登录网络应用程序时失效,但我想知道访问令牌是否可以在注销过程中失效。

作为令牌撤销行为的实现,这个问题没有通用的答案。相关令牌是特定于授权服务器的。 Google 将使刷新令牌与被撤销的访问令牌一起失效,其他实现可能选择不这样做。然而,其他实现甚至可能根本不提供撤销访问令牌的方法。

对于 Google,您可以按照 https://developers.google.com/accounts/docs/OAuth2WebServer#tokenrevoke 中所述在注销时撤销访问令牌,但它也会撤销关联的刷新令牌。然后您必须再次通过授权代码流程以获得新的刷新令牌,您可以尝试使用 prompt=none 以避免提示用户。