[Security] JWT - JWT를 이용한 인증처리 프로젝트2
https://oneseok.tistory.com/70
[Security] JWT - JWT를 이용한 인증처리 프로젝트1
지난 시간까지 이 프로젝트를 만들기 전에 이론적인 내용을 공부해 보았다. RSA를 통한 서명 처리나 HMAC을 이용한 인증처리에 대해 공부해보고 여기서 더 나아가 JWT에 대해 공부했다. 이번 시간
oneseok.tistory.com
지난 시간에는 JWT 인증 프로젝트를 진행하기 위한 기본 설정을 끝 마쳤다
이번 시간에는 로그인에 필요한 Domain 및 controller , repository를 작성해보고 시큐리티 로그인에 필요한
UserDetails 구현체와 UserDetailsService 구현체를 작성해 볼 것이다.
1. 패키지 생성 및 domain , controller , repositry 클래스 만들기
- 패키지와 클래스 파일들을 생성한다.
- Controller 작성하기
- 회원가입을 위한 userRepository 와 비밀번호 암호화를 위한 BcryptPasswordEncoder를 주입받는다.
- Domain 작성하기
- 권한관련 필드를 Enum 타입으로 만들어서 따로 관리할 것이다.
repository 작성하기
- SpringDataJpa를 사용할 것이기에 인터페이스 파일을 만들고 상속받았다.
- 로그인 및 조회를 위해 username으로 조회하는 네이밍 메소드를 만들었다.
2. 회원가입 컨트롤러 및 테스트 하기
- RestApiController에 회원가입 Api 작성하기
- PostMan을 이용하여 회원가입 api 테스트 해보기!!
3. UserDetails 구현체인 PrincipalDetails 파일 생성
- PrincipalDetails 인증용 클래스 생성
- 일부분 짤린 구현 메소드들은 모두 true로 일단 두면된다.
4. UserDetailsService 구현체인 PrincipalDetailsService 파일 생성
- "/login" 요청이 오면 loadUserByUsername 메소드가 동작한다.
- userRepository 를 주입 받아 username으로 회원이 존재하는지 조회한다.
- form 로그인 방식 사용시 "/login" 요청이 자동으로 오나 현재 SecurityConfig 파일에서 formLogin().disabled() 이기때문에 동작하지 않을 것이다.
이번시간에는 도메인과 컨트롤러 리포지토리를 작성하고 회원가입 api를 테스트해보았고 인증객체와 로그인처리를 위한 서비스를 만들었다.
하지만 form로그인 방식이 아니고 JWT 방식이기에 PrincipalDetailsService가 동작하지 않고있다.
다음시간에는 이 PrincipalDetailsService가 동작하도록 하는 필터를 만들어 테스트 해볼 것이다.