首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >是否可以缓存经过验证的JWT令牌以防止spring-boot应用程序中的重复验证过程

是否可以缓存经过验证的JWT令牌以防止spring-boot应用程序中的重复验证过程
EN

Stack Overflow用户
提问于 2020-01-23 19:33:41
回答 4查看 5.8K关注 0票数 2

我们有一个使用微服务架构的spring-boot应用程序。

我们有一个单独的身份验证服务,它提供了一个用RS256算法签名的JWT令牌。

从客户端到我们的主应用服务器的每个请求中都会发送这个令牌。我有验证签名的公钥。

现在,这个JWT令牌在来自客户端的每个API请求中被发送,因为我们的大多数URL都是受保护的。

缓存已经验证过的JWT令牌,以防止在同一用户的每个API调用中重复验证相同的令牌,这是不是一个好主意?

EN

回答 4

Stack Overflow用户

发布于 2020-01-24 04:00:17

缓存令牌验证结果可能有很好的理由。我只会在必要的时候这样做,因为内存中的验证速度很快。

有时,在验证令牌并标识用户之后,您可能希望执行相当昂贵的角色查找等操作-而且您不希望对每个API请求都执行此操作

如果缓存,那么存储令牌的SHA256散列-并设置一个生存时间不超过令牌的exp声明,如Ankur所示。

我的帖子

进一步探讨此主题。

API网关解决方案经常使用此模式。例如,AWS API Gateway允许您缓存策略文档,下次收到相同令牌时会快速查找该文档。

票数 7
EN

Stack Overflow用户

发布于 2020-01-23 19:56:19

您可以缓存JWT令牌,但必须设置缓存超时,这应该等同于令牌超时。

票数 4
EN

Stack Overflow用户

发布于 2020-01-23 19:55:34

JWT的主要目的是不使用

服务器端状态

这意味着服务器不会存储任何信息,会话也不会。

如果您缓存JWT,那么您的服务器将拥有

状态

..。

代码语言:javascript
运行
复制
- You may have trouble later when you wanna **scale-up** your application(have multiple instances) and you may also face some **security issues**.

如果您坚持使用有状态服务器,那么最好使用Redis这样的缓存服务器,并注意每行(每个JWT)的存在时间(生存期)必须等于其到期日期。

按照标准,在服务器中缓存JWT不是一个好主意(使服务器有状态不是一个好主意)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59877621

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档