JWT (JSON Web Token)
JSON 객체로 안전하게 전송하기 위한 방식
- JWT를 암호화하여 당사자간 비밀 제공
- 서명의 용도로도 사용
- RSA, HS256
구조
- Header : 어떤 알고리즘으로 서명했는지
- Payload : 정보
- 등록된 클레임: iss(발행자), exp(만료시간), sub(주제), aud(청중) 등
- 개인 클레임: 유저 ID
- Signature : Header + Payload + 키값 -> 암호화
각각이 Base64로 암호화
1) 알고리즘 - HS256 (HMAC-SHA256 기반 인증)
JWT 발급 과정
JWT 인증 검증 과정
2) 알고리즘 - RS256 (RSA SHA-256 기반 서명)
JWT 발급 과정
Signature를 생성할때
RSA(Header, Payload, 서버 개인키) 로 서명 생성
JWT 인증 검증 과정
서버는 클라이언트의 Signature를 서버의 공개키로 검증
세션 방식의 한계
- 서버별로 세션 정보를 별도 저장해야 함
- 서버 간 세션 공유를 위한 추가 인프라 필요 (Redis 등)
https://gamza-devlog.tistory.com/54
[Spring Security] Session
Session: 서버가 사용자를 기억하게 해주는 메모리HTTP 서버는 무상태(Stateless)이기 때문에 이전 요청을 기억하지 못하므로, 세션을 통해 사용자의 상태 정보를 지속적으로 유지세션이 사라지는 경
gamza-devlog.tistory.com
JWT를 사용하면
서버1, 서버2, 서버3 모두 같은 시크릿키만 보유 → 어떤 서버든 JWT 검증 가능 → 별도 세션 저장소 불필요
'Back-End > ↳ Spring Security' 카테고리의 다른 글
[Spring Security] RSA (1) | 2025.07.27 |
---|---|
[Spring Security] Session (1) | 2025.07.27 |
[Spring Security] 권한 설정 (3) | 2025.07.27 |
[Spring Security] 회원가입 / 로그인 (2) | 2025.07.27 |
[Spring Security] 기본 설정 - URL별 접근 권한 설정 (0) | 2025.07.26 |