gpt4 book ai didi

oauth-2.0 - 如何撤销 JWT token ?

转载 作者:行者123 更新时间:2023-11-30 12:03:47 24 4
gpt4 key购买 nike

我正在使用 Spring Security OAuth2 和 JWT token 。我的问题是:如何撤销 JWT token ?

正如这里提到的 http://projects.spring.io/spring-security-oauth/docs/oauth2.html ,撤销是通过刷新 token 完成的。但这似乎不起作用。

最佳答案

一般来说,最简单的答案是您无法撤销 JWT token ,但事实并非如此。诚实的回答是,支持 JWT 撤销的成本足够大,在大多数情况下不值得,或者明确地重新考虑 JWT 的替代方案。

话虽如此,在某些情况下,您可能同时需要 JWT 和立即撤销 token ,所以让我们来看看它需要做什么,但首先我们将介绍一些概念。

JWT ( Learn JSON Web Tokens ) 只是指定了一种 token 格式,这个撤销问题也适用于通常称为自包含或按值 token 的任何格式。我喜欢后一种术语,因为它与引用标记形成了很好的对比。

by-value token - associated information, including token lifetime, is contained in the token itself and the information can be verified as originating from a trusted source (digital signatures to the rescue)

by-reference token - associated information is kept on server-side storage that is then obtained using the token value as the key; being server-side storage the associated information is implicitly trusted

在 JWT Big Bang 之前,我们已经在我们的身份验证系统中处理 token ;应用程序通常会在用户登录时创建一个 session 标识符,然后使用该标识符,这样用户就不必每次都重复登录过程。这些 session 标识符用作服务器端存储的关键索引,如果这听起来与您最近阅读的内容相似,那么您是对的,这确实被归类为引用标记。

使用相同的类比,理解引用标记的撤销是微不足道的;我们只是删除映射到该 key 的服务器端存储,下次提供该 key 时它将无效。

对于按值标记,我们只需要执行相反的操作。当您请求撤销 token 时,您存储了一些允许您唯一标识该 token 的东西,以便下次您收到它时,您可以额外检查它是否已被撤销。如果您已经认为这样的事情不会扩展,请记住,您只需要将数据存储到 token 到期之前,并且在大多数情况下,您可能只存储 token 的哈希值,以便它始终大小已知。

作为最后的说明并以 OAuth 2.0 为中心,按值访问 token 的撤销目前尚未标准化。尽管如此,OAuth 2.0 token 撤销明确指出,只要授权服务器和资源服务器都同意自定义处理方式,它仍然可以实现:

In the former case (self-contained tokens), some (currently non-standardized) backend interaction between the authorization server and the resource server may be used when immediate access token revocation is desired.

如果您同时控制授权服务器和资源服务器,这很容易实现。另一方面,如果您将授权服务器角色委托(delegate)给像 Auth0 这样的云提供商或像 Spring OAuth 2.0 这样的第三方组件,您很可能需要以不同的方式处理事情,因为您可能只会得到已经标准化的东西。

一个有趣的引用

本文解释了另一种方法:Blacklist JWT它包含一些有趣的实践和模式,后跟 RFC7523

关于oauth-2.0 - 如何撤销 JWT token ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57460450/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com