[SPRING] 스프링 부트 2 보안 기본 인증
SPRING스프링 부트 2 보안 기본 인증
왜 다음 기본 보안 구성은 inMemoryAuthentication () 절을 적용하지 않습니까?
@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.csrf().disable()
.httpBasic()
.and()
.authorizeRequests()
.anyRequest().authenticated();
super.configure(http);
}
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.inMemoryAuthentication()
.withUser("username").password("password");
super.configure(auth);
}
}
응용 프로그램을 초기화 한 후에도 Spring 자체에서 생성 된 기본 사용자 만 남아 있으며 username과 같은 사용자는 없습니다.
해결법
-
==============================
1.void configure (AuthenticationManagerBuilder auth)에서 super 메소드를 호출하지 마십시오. disableLocalConfigureAuthenticationBldr 플래그를 true로 설정하면 AuthenticationManagerBuilder가 무시됩니다. 마지막으로 void configure (AuthenticationManagerBuilder auth) 메소드는 다음과 같아야합니다.
void configure (AuthenticationManagerBuilder auth)에서 super 메소드를 호출하지 마십시오. disableLocalConfigureAuthenticationBldr 플래그를 true로 설정하면 AuthenticationManagerBuilder가 무시됩니다. 마지막으로 void configure (AuthenticationManagerBuilder auth) 메소드는 다음과 같아야합니다.
@Override protected void configure(AuthenticationManagerBuilder auth) throws Exception { auth.inMemoryAuthentication() .withUser("username").password("password").roles("USER"); }
-
==============================
2.스프링 부트 2.x에서는 여기 및 여기에 설명 된대로 고유 한 UserDetailsService를 구현해야합니다.
스프링 부트 2.x에서는 여기 및 여기에 설명 된대로 고유 한 UserDetailsService를 구현해야합니다.
예:
@Configuration public class SecurityConfig extends WebSecurityConfigurerAdapter { private static final Logger log = LogManager.getLogger(); @Override protected void configure(HttpSecurity http) throws Exception { // Note: // Use this to enable the tomcat basic authentication (tomcat popup rather than spring login page) // Note that the CSRf token is disabled for all requests log.info("Disabling CSRF, enabling basic authentication..."); http .authorizeRequests() .antMatchers("/**").authenticated() // These urls are allowed by any authenticated user .and() .httpBasic(); http.csrf().disable(); } @Bean public UserDetailsService userDetailsService() { // Get the user credentials from the console (or any other source): String username = ... String password = ... // Set the inMemoryAuthentication object with the given credentials: InMemoryUserDetailsManager manager = new InMemoryUserDetailsManager(); String encodedPassword = passwordEncoder().encode(password); manager.createUser(User.withUsername(username).password(encodedPassword).roles("USER").build()); return manager; } @Bean public PasswordEncoder passwordEncoder() { return new BCryptPasswordEncoder(); } }
from https://stackoverflow.com/questions/49543394/spring-boot-2-security-basic-authentication by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] PersistentEntityResourceAssembler 매개 변수가있는 RestController 용 JUnit (0) | 2019.05.26 |
---|---|
[SPRING] 404 Tomcat의 외부 웹 사이트로 리디렉션하는 방법 (0) | 2019.05.26 |
[SPRING] 스프링 데이터 저장소에 맞춤 주석 조언 적용 (0) | 2019.05.26 |
[SPRING] @RequestMapping에 사용자 정의 속성 값을 적용하는 방법 (0) | 2019.05.26 |
[SPRING] 자바 함수를 사용하여 스프링 부팅에서 스프링 액추에이터 / 재시작 엔드 포인트 호출 (0) | 2019.05.26 |