JWT.IO
JSON Web Tokens are an open, industry standard RFC 7519 method for representing claims securely between two parties.
jwt.io
1. JWT (Json Web Token) ?
전달하는 데이터를 Json 객체 형태로 안전하게 보내기 위한 표준을 JWT라고 한다.
이때, JWT는 RSA, HMAC 알고리즘을 이용하여 공개키/개인키로 서명되어 있으므로 신뢰할 수 있다.
따라서 '암호화' + '서명된' 정보를 전달할 수 있다.
2. JWT의 사용 용도
2-1. Authorization
2-2. 정보 교환
3. JWT의 구조
JWT는 Header, Payload, Signature로 이루어져 있다. xxxxx.yyyyy.zzzzz
3-1. Header
Header는 alg와 typ으로 이루어진 JSON 형태이며, 이 JSON은 Base64Url로 인코딩 되어있다.
* alg : 어떤 알고리즘을 이용해서 서명했는지
* typ : 토큰 유형
{
"alg": "HS256",
"typ": "JWT"
}
3-2. Payload
Payload는 전달하고자 하는 정보를 담고있다.
{
"sub": "1234567890",
"name": "John Doe",
"admin": true
}
3-3. Signature (서명)
Signature에서는 header, payload, secret 키를 HMACSHA256으로 암호화한다.
이때, 각각의 header, payload, secret key는 Base64로 암호화 되어있고,
이들을 모두 모아서 HS256으로 암호화한게 Signature이다.
HMACSHA256(
base64UrlEncode(header) + "." +
base64UrlEncode(payload),
secret)
4. JWT의 동작 원리
'Spring > Spring Security' 카테고리의 다른 글
[Spring Security] JWT를 위한 배경지식 (0) | 2023.02.10 |
---|---|
[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 |