Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring Boot HttpSecurity-@PreAuthorize-如何设置AuthenticationFilter?_Java_Spring_Spring Boot_Spring Security_Spring Security Oauth2 - Fatal编程技术网

Java Spring Boot HttpSecurity-@PreAuthorize-如何设置AuthenticationFilter?

Java Spring Boot HttpSecurity-@PreAuthorize-如何设置AuthenticationFilter?,java,spring,spring-boot,spring-security,spring-security-oauth2,Java,Spring,Spring Boot,Spring Security,Spring Security Oauth2,我目前正在开发一个API授权。所以基本上我有一个过滤器JwtAuthorizationFilter。在我的RestController中,我想注释应该通过@PreAuthorize(“hasRole('ADMIN')”)过滤的请求。因此,我现在的问题是:如何设置websecurityconfiguredapter(或任何其他东西)以将注释链接到JwtAuthorizationFilter @Configuration @EnableWebSecurity @EnableGlobalMethodS

我目前正在开发一个API授权。所以基本上我有一个过滤器
JwtAuthorizationFilter
。在我的RestController中,我想注释应该通过
@PreAuthorize(“hasRole('ADMIN')”)
过滤的请求。因此,我现在的问题是:如何设置
websecurityconfiguredapter
(或任何其他东西)以将注释链接到JwtAuthorizationFilter

@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        // Basically permit every request, but if needed (through @PreAuthorize) check via JwtAuthorizationFilter)
    }
}
谢谢大家!!
向塞巴斯蒂安问好

JwtAuthorizationFilter的目的应该是设置
认证
的授权。然后,Spring Security的默认方法安全性就足够了

您有两个选择:

使用SpringSecurity的内置JWT支持 如果JWT是由授权服务器创建的,那么就足够了。Spring Security附带了
BealerTokenAuthenticationFilter
JwtAuthenticationProvider
。过滤器将解析
授权
头以获取令牌,提供商将验证令牌并构建基于
范围
scp
声明的
身份验证
。在这种情况下,您可以执行类似于
@PreAuthorize(“hasAuthority('SCOPE\u ADMIN')”)
的操作

如果需要自定义如何将JWT声明转换为
GrantedAuthority
s,则可以发布
JwtAuthenticationConverter
@Bean

有关完整的设置详细信息,请参阅。但基本上,您的配置如下所示:

http
.authorizeRequests((authz)->authz
.anyRequest().authenticated()
)
.oauth2ResourceServer((oauth2)->oauth2
.jwt(Customizer.withDefaults())
);
在没有授权服务器的情况下使用Spring Security内置的JWT支持 SpringSecurity的现有支持是在设计授权服务器时考虑的,但这不是一个要求

您可以使用您的应用程序

滚你自己的
您可以保留
JwtAuthorizationFilter
,但不清楚为什么Spring Security现有的支持不足。要添加筛选器,只需在(myFilter、BealerTokenAuthenticationFilter.class)之前执行
addFilterBefore操作即可
。你可以看一看你在创建自己的过滤器时应该考虑的一些事情。

为什么在Spring Security中已经内置了一个JWT过滤器?感谢您的广泛澄清!我的荣幸,塞巴斯蒂安·布伦纳特