springboot 微服务中的自定义 JWT 令牌

Posted

技术标签:

【中文标题】springboot 微服务中的自定义 JWT 令牌【英文标题】:Custom JWT token in springboot microservices 【发布时间】:2022-01-11 00:57:23 【问题描述】:

我们有一个应用程序在成功验证后从外部系统加载信息(特定于用户),为了避免每次 api 调用到外部系统的往返,我们计划首先创建一个带有用户特定信息的自定义 JWT 令牌当用户通过身份验证时,然后使用 http 拦截器在每个响应标头中将令牌发送给用户,并且在前端,我们将自定义令牌与授权令牌一起包含在每个请求中。这是正确的方法吗?您有其他建议吗?

我研究了其他分布式缓存技术,例如 redis,但对于小型用例而言并不那么吸引人。我们的有效载荷长度不超过 4 到 5K,因此倾向于 JWT 选项

【问题讨论】:

【参考方案1】:

可以在访问令牌中包含允许您处理用户授权的用户信息。请注意隐私含义,可能不包括社会安全号码或出生日期等个人信息或其他可识别信息。

另外,请确保令牌大小不会变大。另一种选择是在 API 收到新的访问令牌时查找并缓存用户信息。

包括 ASP.NET Core 在内的某些系统确实以加密形式将令牌存储在会话 cookie 中,因此最终用户无法查看或访问存储的令牌。

如果您正在开发 SPA 应用程序,则使用 BFF pattern 是一种方法。

【讨论】:

以上是关于springboot 微服务中的自定义 JWT 令牌的主要内容,如果未能解决你的问题,请参考以下文章

JWT 方法中的自定义刷新令牌方法

JWT 注销:在微服务架构中的服务之间共享被列入黑名单的无效令牌

微服务 - 如何使用 JWT 对单独的 API 微服务进行身份验证

spring boot - 假装客户端发送基本授权标头|将 jwt 令牌从一个微服务传递到另一个微服务

Springboot security oauth2 jwt实现权限控制,实现微服务获取当前用户信息

Spring Boot 自定义 JWT 过滤器不允许任何没有令牌的请求