본문 바로가기
Spring

JWT

by Mecodata 2023. 5. 25.

JWT(JSON Web Token)

- JSON 객체를 사용해서 토큰 자체에 정보들을 저장하고 있는 웹 토큰

장점

- 중앙의 인증서버, 데이터 스토어에 대한 의존성 X

- 시스템 수평 확장에 유리

- Base64 URL Safe Encoding > URL, Cookie, Header 모두 사용이 가능하다.

단점

- Payload의 정보가 많아지면 네트워크 사용량이 증가함

- 토큰이 클라이언트에 저장되기 때문에 서버에서 클라이언트의 토큰을 조작할 수 없음

 

Authentication(인증) 

- 'A'라고 주장하는 주체(user, subject, principal)가 'A'가 맞는지 확인하는 것

- 인증 시 ID와 Password를 담고 인증 검증을 위해 전달되어 사용
- 인증 후 최종 인증 결과(user 객체, 권한 정보)를 담고 SecurityContext 에 저장되어 전역적으로 참조가 가능.

Authentication 객체 구조

- principal = 사용자 ID 혹은 User 객체 저장

- credentials = 사용자 Password

- authorities = 사용자의 권한 목록

- details = 인증 부가 정보

- Authenticated = 인증 여부 (true/false)

 

JWT 예외 종류

- ExpiredJwtException = JWT의 유효시간 초과

- UnsupportedJwtException = JWT의 형식이 일치 X

- MalformedJwtException = JWT가 올바르게 구성 X

- SignatureException = JWT의 기존 signature 검증이 실패 

- PrematureJwtException = nbf를 선언했을 경우 토큰 유효 시간 전에 사용

- ClaimJwtException = JWT에서 권한 Claim 검사를 실패

 

JWS(JSON Web Signature)

- 서버에서 인증을 증거로 인증 정보를 서버의 개인키로 서명한 것을 토큰화한 것

'Spring' 카테고리의 다른 글

Logback  (0) 2023.09.12
의존성 주입 방식  (0) 2023.05.25
Spring Security 기본 로그인 구현 중 실수 정리  (0) 2023.05.11
Spring Security 기본 세팅  (0) 2023.05.09
Thymeleaf 기본 문법  (0) 2023.05.08

댓글