我正在尝试为我的项目设置多个WebsecurityConfigrerAdapter,其中Spring启动执行器API使用基本身份验证进行保护,所有其他endpoint使用JWtAuthentication进行身份验证。我只是无法使它一起工作,只有较低顺序的配置可以工作。我使用Spring Boot 2.1.5。释放
带有JWT身份验证程序的安全配置1
@Order(1)
@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {
private static final String[] AUTH_WHITELIST = {
"/docs/**",
"/csrf/**",
"/webjars/**",
"/**swagger**/**",
"/swagger-resources",
"/swagger-resources/**",
"/v2/api-docs"
};
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.antMatchers(AUTH_WHITELIST).permitAll()
.antMatchers("/abc/**", "/abc/pdf/**").hasAuthority("ABC")
.antMatchers("/ddd/**").hasAuthority("DDD")
.and()
.csrf().disable()
.oauth2ResourceServer().jwt().jwtAuthenticationConverter(new GrantedAuthoritiesExtractor());
}
}
带有用户名/密码的基本身份验证配置
@Order(2)
@Configuration
public class ActuatorSecurityConfig extends WebSecurityConfigurerAdapter {
/* @Bean
public UserDetailsService userDetailsService(final PasswordEncoder encoder) {
final InMemoryUserDetailsManager manager = new InMemoryUserDetailsManager();
manager.createUser(
User
.withUsername("user1")
.password(encoder.encode("password"))
.roles("ADMIN")
.build()
);
return manager;
}
@Bean PasswordEncoder encoder(){
return new BCryptPasswordEncoder();
}*/
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.antMatchers("/actuator/**").hasRole("ADMIN")
.and()
.httpBasic();
}
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.inMemoryAuthentication().withUser("user1").password("password").authorities("ADMIN");
}
}
我已经尝试让它工作了很多天,但无法让它们一起工作。如果我交换订单,只有基本的身份验证有效,而不是JWT身份验证管理器。
我问过很多问题,比如
[Spring Boot安全-多个WebSecurityConfigrerAdapter
[Spring启动中有多个WebSecurityConfigrerAdapter的问题
[https://github.com/spring-projects/spring-security/issues/5593][1]
[https://www.baeldung.com/spring-security-multiple-entry-points][1]
似乎什么都不起作用,这是Spring的已知问题吗?
要使用多个WebsecurityConfigrerAdapter
,您需要使用RequestMatcher
将它们限制为特定的URL模式。
在您的情况下,您可以为ActuatorSecurityConfig
设置更高的优先级,并将其仅限于执行器endpoint:
@Order(-1)
@Configuration
public class ActuatorSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.requestMatchers().antMatchers("/actuator/**")
.and()
.authorizeRequests().anyRequest().hasRole("ADMIN")
.and()
.httpBasic();
}
}
我目前想实现这样的东西: 但是在中,我们将重点关注authProvider()方法和configure() 随着最近的消息,已被弃用。经过研究,我发现了一件事: 所以我也不得不这么做 这解决了另一个问题。但现在,我发现了这个错误。 这也是我的用户服务 你们介意帮我解决这个问题!谢谢:) 我还想提一下,我还没有在网上找到答案
我正在尝试在我的应用程序中设置Spring Security,它有3个组件: REST API(在v1路径下) 我想这样设置安全性: 用JWT令牌保护的REST API 使用HTTP basic保护管理员 无担保文件(公共资源) 我尝试在的单独实现中为这3个部分配置身份验证,结果如下所示: 对于REST API: 对于Spring管理员: 对于公共文件: 我的主要应用程序类如下所示: 当我运行应用
我的代码中有多个WebSecurity配置适配器: 当我从ajax请求访问我的站点时,我得到:从源http://localhost:8082访问http://localhost:8080/user/authenticate的XMLHttpRequest已被CORS策略阻止:对飞行前请求的响应未通过权限改造检查:请求的资源上不存在访问控制允许源标头。 我想我的WebSecurity配置适配器中有一些
我使用的Spring安全与oAuth2,但我有一个问题,我没有找到任何答案,在许多项目的例子,你有2次配置(HttpSecurity超文本传输协议)。 例如在https://github.com/spring-projects/spring-security-oauth/blob/master/samples/oauth2/sparklr/src/main/java/org/springframe
我在SpringBoot应用程序中实现了多语言,在完成以下配置后,我得到的属性文件无法加载 文件夹名称 src/main/resources/i18n/messages 属性文件名 messages_us.properties 在应用程序主类 内部控制器 标题 接受-语言:我们 我明白了 [36mo.s.c.s.ResourceBundleMessageSource[0;39m[2m:[0;39m
我正在使用依赖项从我的Spring boot微服务中读取配置图,并且它的工作正常。 修改配置映射后,我正在使用刷新endpoint 它按预期工作,应用程序加载configmap更改。 问题上面的工作正常,如果我只有我的应用程序的1个pod,但当我使用更多的1个pod只有1个pod选择更改不是全部。 在下面的示例中,只有我pod选择更改 minkube部署 配置映射。yml公司 bootstrap.