- Header(헤더): JWT의 헤더는 두 가지 정보를 포함
(토큰의 타입을 포함, 보통 JWT)
- "alg" (Algorithm): 서명을 생성하는 데 사용된 해싱 알고리즘을 지정합니다. 일반적으로 HMAC SHA256 또는 RSA를 사용
- "typ" (Type): 토큰의 유형을 나타내며, 보통 "JWT"로 지정
2. Payload(내용): JWT의 페이로드는 실제로 전송하려는 정보를 포함합니다. 페이로드는 클레임(claim)이라고도 불리는 키-값 쌍의 집합으로 구성됩니다. 클레임은 세 가지 유형으로 나뉜다.
(사용자나 토큰에 대한 토큰 정보 포함, 예) 사용자 이름, 토큰 만료 시간 등)
* JWT 토큰은 상태 또는 토큰에 대한 정보를 서버에서 관리 하지 않기 때문에 만료 시간을 꼭 넣어줘야 한다.
(서버가 아닌 클라이언트에서 관리 되는 JWT 의 특성상 유출 될 경우 보안에 문제가 생기기 때문에 만료 시간 지정이 필수 적이다.)
- Registered Claims: 표준 클레임으로, 토큰에 대한 정보를 제공합니다. 일반적으로 이메일 주소나 발급자와 같은 정보가 여기에 포함됩니다.
- Public Claims: 충돌을 피하기 위해 클레임의 이름을 URI 형식으로 지정합니다. 공개 클레임은 사용자 정의 클레임입니다.
- Private Claims: 서비스 내에서 사용하기 위해 정의된 사용자 지정 클레임입니다. 이름이 충돌하지 않도록 URI 형식으로 지정됩니다.
3. Signature(서명): 서명은 헤더, 페이로드 및 비밀 키를 사용하여 생성됩니다. 서명을 사용하면 토큰이 변경되지 않았고(무결성 확인) 토큰이 발급된 곳에서만 생성되었는지 확인할 수 있다(인증).
(토큰이 유효한지 확인, 위조 되진 않았는지 ?)
이러한 구조로 JWT는 정보를 안전하게 전달하고 인증 및 권한 부여에 사용. 헤더와 페이로드는 Base64로 인코딩되어 있으며, 서명은 Base64로 인코딩되지만 비밀 키로 암호화되어 있다.
'Java > 개념 정리' 카테고리의 다른 글
스레드의 차단(blocked) (0) | 2024.05.16 |
---|---|
var 키워드에 대하여 (0) | 2024.02.28 |
Heap 이란? (1) | 2023.10.22 |
연결리스트(LinkedList) (0) | 2023.10.21 |
HashMap 이란? (0) | 2023.10.20 |