【发布时间】:2017-12-27 02:59:03
【问题描述】:
我创建了一个 Spring JWT 授权应用程序。 JWT 包含一些自定义声明。在资源服务器端,我想知道我应该在哪里解析 JWT 令牌来收集和检查这些声明?我应该在控制器还是在某些过滤器中执行此操作?最佳做法是什么?也许你有一些例子?
【问题讨论】:
-
您能否详细说明这些自定义声明的目的?默认情况下,Spring Security 查找权限声明,您可以使用角色或其他权限填充它,然后使用 @PreAuthorize 注释保护方法和端点。
-
我猜,您的 JWT 令牌中的自定义声明必须为您的应用程序所知。理想情况下,它应该是过滤器的一部分,以提取身份验证值并在 Spring Security 上下文中进行设置。 Auth Manager 将从哪里进行检查。正如@punkrocker27ka 所建议的,后来所有事情都可以由 Spring 安全性本身来处理。看看我的想法实现:github.com/deepak-java/jwt-spring-boot
-
@punkrocker27ka 我需要自定义声明来涵盖一些业务逻辑,默认声明是不够的。 Deepak Singh 感谢您的实施,这将对我有所帮助!
-
@KyleAnderson,你怎么知道 Spring 默认查找“authorities”声明?您可以参考来源或示例吗?我尝试了这种方法,但没有奏效。据我所知,Spring Security 只会自动从“范围”声明中提取权限。例如,其他所有内容都应使用“JwtAuthenticationConverter”手动映射。
标签: spring spring-security jwt spring-security-oauth2