1. JWT란 ?
JWT (Json Web Token)은 json 객체를 통해 토큰 자체에 다양한 정보를 저장하는 웹 토큰이다.
JWT의 장점
1) 중앙 인증 서버나 데이터 스토어에 대한 의존성이 없으므로, 시스템을 수평적으로 확장할 수 있다.
2) Base 64 URL Safe Encoding을 사용하므로 URL, Cookie, Header 등 다양한 용도로 사용가능
JWT의 단점
1) Payload의 정보량이 많아지면 네트워크 사용량이 증가하므로, 효율적인 데이터 설계가 필요하다.
2) 토큰이 클라이언트에 저장되므로, 서버에서 그 토큰을 직접 조작할 수 없다.
[공식 문서] https://jwt.io/introduction
2. JWT의 구성
JWT는 Header, Payload, Signature의 3가지 구성요소로 이루어져 있다.
2-1. Header
Header에는 토큰의 타입(jwt 등)과 signature를 해싱하기 위한 알고리즘 정보가 담겨있다.
{
"alg": "HS256",
"typ": "JWT"
}
2-2. Payload
Payload에는 실제 시스템에서 사용하기 위해 서버와 클라이언트가 주고받는 정보가 담겨있다.
{
"sub": "1234567890",
"name": "John Doe",
"admin": true
}
2-3. Signature
Signature는 서버에서 토큰의 유효성을 검증하기 위한 문자열이다.
HMACSHA256(
base64UrlEncode(header) + "." +
base64UrlEncode(payload),
secret)
'Spring > Spring Security' 카테고리의 다른 글
[Spring Security] Authentication 객체 타입 (0) | 2023.02.10 |
---|---|
[Spring Security] UserDetailsService (0) | 2023.02.01 |
[Spring Security] UserDetails (0) | 2023.02.01 |
[Spring Security] SecurityConfig (0) | 2023.01.31 |
[Spring Security] 전반적 Flow (0) | 2023.01.21 |