基本上我想在解析 JWT 令牌之后和调用该方法之前实现一个过滤器,并能够根据 http 标头修改身份验证对象
语境
在我们的应用程序中,我们有(除其他外)三个与身份验证/授权相关的实体:用户、权限和组。权限可以直接分配给用户,也可以分配给用户所属的组之一。
鉴于此,JWT 令牌如下所示:
{
"username": "duck",
"groups": [
{
"name": "swimmer",
"permissions": [
"swim"
]
},
{
"name": "walker",
"permissions": [
"walk"
]
}
],
"permissions": [
"quack"
]
}
JWT 流程是设置扩展AuthorizationServerConfigurerAdapter和ResourceServerConfigurerAdapter,并且权限是通过扩展从 JWT 声明的映射中提取的DefaultUserAuthenticationConverter
通过@EnableGlobalMethodSecurity(prePostEnabled = true)在配置中使用,我可以用 @PreAuthorize
例如:
@PreAuthorize("hasPermission('quack')")
public void quack();
这适用于直接分配给用户的权限。
但是我想接收一个 http 标头,例如:'x-group' 并将该组的权限(如果有)添加到身份验证对象
然后,给定上面设置为 http 标头的“jwt”,swimmer我希望能够调用以下方法:
@PreAuthorize("hasPermission('swim')")
public void
富国沪深
相关分类