여러 패턴에 대한 스프링 부트에서의 여러 Web Security Configurer Adapter
프로젝트용으로 여러 WebsecurityConfigrAdapter를 설정하려고 합니다.여기에는 스프링 부트액튜에이터 API가 기본 인증으로 보호되며 다른 모든 엔드포인트가 JWtAuthentication으로 인증됩니다.함께 동작할 수 없는 것은 하위 설정뿐입니다.Spring Boot 2.1.5를 사용하고 있습니다.풀어주다
JWT 오센티케이터를 사용한 보안 컨피규격
@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 Auth Manager는 작동하지 않습니다.
난 많은 SOF 질문들을 겪었어
[https://stackoverflow.com/questions/40743780/spring-boot-security-multiple-websecurityconfigureradapter] [1]
[https://stackoverflow.com/questions/52606720/issue-with-having-multiple-websecurityconfigureradapter-in-spring-boot] [1]
[https://github.com/spring-projects/spring-security/issues/5593] [1]
[https://www.baeldung.com/spring-security-multiple-entry-points] [1]
아무 것도 작동하지 않는 것 같은데, 봄에 이미 알려진 문제인가요?
여러 개를 사용하려면WebsecurityConfigurerAdapter
를 사용하여 특정 URL 패턴으로 제한해야 합니다.
이 경우, 보다 높은 priority를 설정할 수 있습니다.ActuatorSecurityConfig
액튜에이터 엔드 포인트로만 제한합니다.
@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();
}
}
언급URL : https://stackoverflow.com/questions/59058596/multiple-websecurityconfigureradapter-in-spring-boot-for-multiple-patterns
'programing' 카테고리의 다른 글
jQuery에서 이 JSON 개체를 반복하려면 어떻게 해야 합니까? (0) | 2023.03.16 |
---|---|
템플릿이 렌더링되지 않습니다. (0) | 2023.03.16 |
PreAuthorize 오류 처리 (0) | 2023.03.11 |
JQuery, Spring MVC @Request Body 및 JSON - 연계 동작 (0) | 2023.03.11 |
Reactjs onPaste 이벤트에서 값을 붙여넣는 방법 (0) | 2023.03.11 |