쌓고 쌓다
JSON Web Token? 본문
JWT는 서명된 토큰에 중점을 둔다.
즉, JWT 토큰은 내가 쓴게 맞어라는 서명의 용도로 사용하는 것이다.
Authorization에 사용
사용자가 성공적인 로그인한 이후에 우린 JWT 토큰을 응답으로 준다.
사용자는 이 토큰을 가지고 허용된 리소스에 접근할 수 있는 것이다.
JWT 구조
JWT는 3 파트로 나눠지며 각 파트는 . 으로 구분된다.
xxxxx.yyyyyy.zzzzz 구조를 갖는 것이다.
다음은 3 파트를 설명한다.
1. Header
보통 서명에 사용된 알고리즘과 토큰 유형을 갖는다.
{
"alg": "HS256",
"typ": "JWT"
}
이 내용 JSON은 Base64Url로 인코딩되어 JWT의 첫번째 부분을 차지한다.
2. Payload
Playload는 Claim을 포함한다. 나중에 JWT 토큰을 만들며 Claim을 빌드하는 과정이 있는데 아하싶다.
클레임 종류가 다양하지만
그 중 Private Claim으로 유저 아이디와 같은것을 넣어 주고 받을 것이다.
공개되어도 괜찮고 유저를 구분할 수 있는 것을 넣어줄것이다.!
3. Signature
Header, Payload, SecrectKey(서버만 알고 있는 비밀 키)를
HMAC256(HMAC SHA256)로 암호화합니다.
HMACSHA256(
base64UrlEncode(header) + "." +
base64UrlEncode(payload),
secret)
따라서 시크릿 키는 안전하게 보관해야한다...
이 세가지를 합쳐서 다음과 같이 JWT를 완성할 수 있다.
그럼 JWT는 어떻게 사용해야 하는가?
서버에 요청할때 헤더에 Authorization 키 값을 다음과 같이 넣어주어
서버에 요청을 하면 된다.
Authorization: Bearer <token>
'Git & CS' 카테고리의 다른 글
IP, TCP, UDP, PORT, DNS 요약 정리 (0) | 2024.04.14 |
---|---|
Git remote에서 삭제된 브랜치가 local에서 보일때 (0) | 2024.02.27 |
AccessToken, RefreshToken? (0) | 2024.01.11 |
java.sql.SQLException: Access denied for user 'root'@'localhost' (1) | 2023.11.09 |
SSH 편하게 접속하는 방법 (1) | 2023.11.08 |
Comments