使用 Spring Security 和 JWT 身份验证从外部服务向登录用户添加角色

问题描述 投票:0回答:1

我们的应用程序使用第三方系统来验证用户身份。有了 JWT 令牌,UI 就可以调用 API 服务器。问题是 JWT 不包含用户角色。为了解决这个问题,我们的 Java 后端需要调用另一个外部系统并组织授权 - 非常慢、有缺陷且冗长。

有没有办法使用 Java Spring Security 来处理这种情况?

  1. 我们无法重写 JWT,所以这不是一个选择。
  2. 我们可以在安全上下文中添加角色并将其用作缓存吗?不是最佳但进步。
  3. 是否可以组织“第二次”登录后端系统并发送到UI 另一个有角色的 JWT?存在过期时间不同的问题...
  4. 有没有可以使用的定制器、过滤器?
  5. JwtAuthenticationConverter合适吗?

欢迎任何形式的帮助:想法、建议、链接、文章或书籍。 先谢谢你了

spring-security jwt roles
1个回答
0
投票

这里的答案非常简单,正确使用 JWT 并确保任何范围/角色都包含在签名的 JWT 中。

如果无法做到这一点,则应删除整个 JWT“解决方案”,因为它不符合安全模型。

我会忽略这样一个事实:提问者正在制定什么可以做或不可以做的基本规则。因为这个问题基本上问我们“如何将项目存储在顺序集合中,但它不能是列表”。这个问题毫无意义,答案很清楚。

© www.soinside.com 2019 - 2024. All rights reserved.