JAN's History
JWT 인증 방식 시큐리티 동작 원리 본문
회원가입
내부 회원가입 로직은 세션 방식과 JWT 방식의 차이가 없다.
- Api 서버이기 때문에 POST URL로 데이터를 요청합니다.
- JoinController에서 어느정도 로직을 진행하고
- JoinService에서 UserEntity로 데이터를 담아서 DB, UserRepository에 저장합니다.
로그인 (인증)
로그인 요청을 받은 후 세션 방식은 서버 세션이 유저 정보를 저장하지만 JWT 방식은 토큰을 생성하여 응답한다.
- username, password로 요청이 오면 AuthenticationFilter를 통해서 특정한 회원검증을 하는 로직을 작성합니다.
- AuthenticationManager를 통해 내부 DB의 Id와 PW를 던져서 유저를 검증합니다.
- 성공적으로 검증이 되면 successfulAuth메서드를통해 JWT util 토큰을 통해 데이터를 저장합니다.
➡️회원 정보를 검증하는 방식은 Session과 동일합니다.
경로 접근 (인가)
JWT Filter를 통해 요청의 헤더에서 JWT를 찾아 검증을하고 일시적 요청에 대한 Session을 생성한다. (생성된 세션은 요청이 끝나면 소멸됨)
- POST요청이 오면 Security Authentication Filter가 검증을 진행하고 그 다음 JWT Filter를 우리가 강제로 커스텀해 만들어 검증을 진행합니다.
- 여기에서 Token이 알맞게 존재하고 정보가 일치한다고 하면 Security ContentHolder Session에서 Session을 만들어줍니다.
- 그리고 특정한 경로로 들어가면 Session을 통해 로그인 상태를 유지할 수 있습니다.
- 그러나 경로마다 Session을 새로 발급해줘야 한다는 단점이 있습니다.
'JWT' 카테고리의 다른 글
Spring Security - OAuth2 session 방식으로 구현 해보기(Google,Facebook,Naver) (0) | 2024.06.17 |
---|---|
Spring Security Session 권한처리 (1) | 2024.06.14 |
로그인 필터 구현 (0) | 2024.06.12 |
SecurityConfig 클래스 (0) | 2024.06.11 |
CSRF Token의 개념과 공격 (0) | 2024.06.08 |