RestApi 만들기 - 스프링 시큐리티 설정 (13)

반응형
반응형

나는 얼마전 스프링 시큐리티를 설치하고,
유저를 만들어서 진행을 한적이 있었다,.
그리고 오늘 프로잭트를 실행시켰다.

하지만 결과는 참담했다.

모든 테스트가 틀렸다고 나온다는 것을 알 수 있었다.
이상했다. 나는 분명... 한적이 없는데..
알고보니 스프링 시큐리티 자체에서 유저를 만들고,
그것을 모든 테스트 코드에 적용하기 때문이라고 했다.
그래서 나온 상태코드가 403 (권한이 없다)가 나온것도 그 때문인것 같다.
그러면 어떻게 이 문제를 해결해야 될까?

@Configuration
@EnableWebSecurity
public class SpringConfig extends WebSecurityConfigurerAdapter{

}

이걸 추가하게 되면 스프링 시큐리티에서 적용되는 시큐리티는 더 이상 적용이 안된다고 한다.
과연 사실일까?

내가 놓치고 있는게 있을까?

일단, 강의에서 지시한대로 진행해보자.
강의해서는 패스워드 인코더를 만들라고 지시했다.,

@Bean
  public PasswordEncoder passwordEncoder() {
    return PasswordEncoderFactories.createDelegatingPasswordEncoder();
  }

이 코드는 다양한 패스워드인코딩방법?을 prefix형태로 제공한다고 한다.

이렇게 확인 할 수 있다.
확인결과 스프링5에 이러한 내용이 추가 되었다는 것을 알 수 있었다.

전에 만들었던 회원기능?도 추가하자.
UserDetailsService을 AccountService로 만들었었다.
그것을 이용하자.

@Override
  protected void configure(AuthenticationManagerBuilder auth) throws Exception {
    auth
        .userDetailsService(accountService)
        .passwordEncoder(passwordEncoder);

  }

이제 스프링시큐리티는 accountService와 passowrdEncoder를 적용하게 되었다.
근데 이것을 빈으로 등록할 수 는 없을까?
다행히도 이것을 빈으로 만들 수 있는 방법을 제공하고 있다.

 @Bean
  @Override
  public AuthenticationManager authenticationManagerBean() throws Exception {
    return super.authenticationManagerBean();
  }

이렇게 등록하면 된다고 한다.
이제 특정 url은 스프링 시큐리티가 적용하지 못하게 막아보자.

 @Override
  public void configure(WebSecurity web) throws Exception {
    web.ignoring().mvcMatchers("/docs/**")
        .requestMatchers(PathRequest.toStaticResources().atCommonLocations());
  }

어디서 부터 잘못된거지...
페이지가 없다고 한다.
큰일이다.... 다시 처음부터 해야되나 아니면 만들어야될까?

의문의 문제가 발생해서... restApi공부는 여기서 마치고
2달뒤에 다시 restAPI를 새롭게 공부해서 올리도록하겠습니다. 다른거 공부해야지!

반응형

댓글

Designed by JB FACTORY