如果 oauth 是无状态的,谷歌如何销毁 oauth 令牌?

Posted

技术标签:

【中文标题】如果 oauth 是无状态的,谷歌如何销毁 oauth 令牌?【英文标题】:If oauth is stateless how can google destroy oauth token? 【发布时间】:2020-06-19 14:00:33 【问题描述】:

我知道 oauth 是如何工作的,在成功通过身份验证后,您使用该 jwt 令牌发出请求。

但问题是我如何跟踪存在多少活动令牌或在令牌过期之前销毁令牌。让我们假设 google 或 github,当您使用 oauth 进行身份验证并且他们为您提供访问令牌时,您也可以在他们的仪表板上跟踪或销毁令牌。所以他们怎么知道我的令牌不再有效。我唯一的方法是他们在授予访问令牌时也建立会话。

但问题是他们必须检查会话是否仍然有效或存在于每个请求中。 如果他们在每个请求上都检查它,那么无状态的意义在哪里?

【问题讨论】:

OAuth2 不必是无状态的或使用 JWT。如果服务提供商有一个列出令牌的仪表板,那么这不是无状态的 - 它们由提供商存储,并且可能在您访问相应资源时进行检查。 【参考方案1】:

无状态的,并且有没有个会话。 希望撤销令牌的 OAuth 实现使用所有端点都可以访问的令牌撤销列表来执行此操作。

【讨论】:

以上是关于如果 oauth 是无状态的,谷歌如何销毁 oauth 令牌?的主要内容,如果未能解决你的问题,请参考以下文章

谷歌项目在多个网页上使用

带有 JWT 的 Spring Security Oauth2 真的是无状态的吗?

Spring security oauth 令牌提取

如何从谷歌撤销 OAuth 提供的令牌?节点JS

低代码如何构建支持OAuth2.0的后端Web API

如何使用 Spring Boot + Angular 处理外部 OAuth2 身份验证