실습#3) CustomAuthenticationProvider 만들기

나무·2024년 5월 8일

스프링 시큐리티

목록 보기
8/8
post-thumbnail

1. Config

SecurityConfig

우선 AuthenticationProvider 를 주입 받을 수 있도록 필드로 선언한다음, SecurityBuilder (httpSecurity) 에 등록을 해준다.

AuthConfig

또한 기존에 SecurityConfig 에 빈으로 등록되어있던 PasswordEncoder 를 새로운 Config 파일인 AuthConfig 로 옮겼다.

이제 SecurityConfig 는 오직 인증과 인가처리에 관한 빈들만 등록을 하고 나머지 빈들은 AuthConfig 에 등록을 하게 된다. (관심사 분리)

2. AuthenticationProvider 구현하기

➡️ AuthenticationProvider 란?

마지막에 Authentication 객체를 반환해줘야하는데 이때 우리는 UsernamePassword 방식을 사용했으므로 토큰또한 UsernamePasswordAuthenticationToken 객체를 반환하게된다.

참고로 비밀번호의 경우 일부러 null 로 초기화 해주었는데 이는 보안상의 일부러 해준것이다.

비밀번호 정보는 인증할 때만 필요한 것이지 굳이 인증이 성공한 이후에 계속 메모리 상에 남아있을 필요가 없을 뿐더러 보안상 위험하기 때문에 지우는 것이 안전하다.

또한 토큰 객체의 principleUserDetails 를 넣을지, 아니면 따로 DTO 로 뽑아서 필요한 데이터들을 넣을 지는 개발자 마음이다. 강의에서는 DTO를 넣었는데 본인은 그냥 UserDetails(AccountContext) 를 집어넣었다.

3. 결과

DB에 저장되어있는 유저정보

로그인 시도

FormAuthenticationProvider

본 포스트는
스프링 시큐리티 완전 정복 6.x 개정판 를 보고 정리했습니다.

profile
🍀 개발을 통해 지속 가능한 미래를 만드는데 기여하고 싶습니다 🍀

0개의 댓글