본문 바로가기

패스트캠퍼스/100% 환급 챌린지_2

패스트캠퍼스 환급챌린지 23일차 : Netplix 구독형 멤버십 프로젝트로 배우는 Spring Security 강의 후기

본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.

https://abit.ly/lisbva

 

 

안녕하세요 :)

오늘은 챌린지 23일차로, 아쉽게도 수요일 밖에 되지는 않았네요...

 

오늘 배울 내용은,

Part A. 로그인, 로그아웃, 회원가입으로 배워보는 스프링 시큐리티 기초

Ch 6. 실전: 로그인, 로그아웃, 회원가입 만들어보기

"04. 스프링 시큐리티 관련 설정" 입니다.


 

이번 시간에는 스프링 시큐리티 관련 설정들에 대해 살펴보는 시간을 가졌다.

설정들은 config 패키지 아래에 위치하고 있고, 3개의 config 파일들이 있는데, 이름에서부터 알 수 있듯 jpa-config는 데이터베이스 쪽 설정이라서 이번 시간에는 무시하고, Spring-security-config와 Web-security-config를 살펴보았다.

먼저, Spring-security-config를 보면 여기에는 두 개의 패스워드 인코더를 설정하는 부분이 있다. 첫번째는 BCryptPasswordEncoder에 대한 Bean 설정하는 부분이 있고, 두번째는 SCryptPasswordEncoder 설정하는 부분이 있다. SCryptPasswordEncoder 를 설정할 때 파라미터 값들을 넣어줘야 하는데, 임의의 값들을 넣어주면서 설정했다.

Web-security-config 를 살펴보니 크게 세 개의 Bean을 등록하고 있다. 첫번째는 AuthenticationManager 등록을 하고 있고, 두번째는 SecurityFilterChain 등록을 하고 있고, 세번째는 WebSecurityCustomizer 등록을 하고 있다.

두번째로 나오는 SecurityFilterChain 를 살펴보면, 화면에서 로그인을 하는 것을 활용할 것이기 때문에 formLogin을 설정했다. defaultSuccessUrl 이라는 설정에 기본 값으로는 로그인에 성공하면, 메인으로 가게끔 URL을 설정하고, 항상 사용하게끔 true로 설정했다. 그리고 모든 요청에 대해서는 일단 인증 요청을 하게끔 막아두게 했다.

다음으로 WebSecurityCustomizer 에서 특정 경로로 들어오는 API 요청에 대해서는 일단 허용하게끔 임시로 설정해두었다. (원래는 모든 요청에 대해 인증해야함)

다음으로 봐야 하는 것은 security 패키지 아래에 있는 클래스들이다. 먼저 AuthenticationProviderService 클래스는 AuthenticationProvder 라고 하는 인터페이스를 구현하고 있다.

AuthenticationProvder 에 대한 인터페이스를 구현하기 위해서는 authenticate 라고 하는 메소드와 supports라고 하는 두 개의 메소드를 구현해야 한다. supports 의 경우에는 유저 네임과 패스워드 기반의 authentication을 할 것인지 아닌지를 판단하는 로직이 포함되어 있다. authenticate 메소드는 Authentication을 받아서 그대로 authentication을 반환하는 메소드가 된다. 그래서 여기서는 패스워드가 맞는지 틀린지를 확인하는 공간이라고 보면 된다. 이렇게 이번 시간에는 스프링 시큐리티 관련 로직을 살펴봤고, 다음 시간에는 회원가입하는 로직에 대해 살펴볼 예정이다.