18. JWT 구조이해
by 볼빵빵오춘기JWT 구조
- .으로 구분해서 Header.Payload.Signature의 3 부분으로 이루어져있다.
- Header, Payload, Signature 각 부분은 Base64Url로 인코딩 되어 표현된다.
※ Base64Url는 암호화된 문자열이 아니고, 같은 문자열에 대해 항상 같은 인코딩 문자열을 반환한다.
Header
{
"alg" : "HS256"
, "typ" : JWT
}
- Signature를 해싱하기 위한 알고리즘을 지정한다.
- header는 암호화 된 것이 아니다.
Payload
{username:jinny}
토큰에서 사용할 정보의 조각들인 클레임(요구사항, 정보)이 담겨 있다.(⇒ 엔티티 및 추가 데이터에 대한 설명을 담고 있다.)
Signature
- 토큰을 인코딩하거나 유효성 검증을 할 때 사용하는 고유한 암호화 코드이다.
- Signature은 위에서 만든 Header와 Payload의 값을 각각 BASE64Url로 인코딩한다. →
인코딩한 값을 비밀 키를 이용해 Header에서 정의한 알고리즘으로 시그니쳐를 만든다. →
이 값을 BASE64Url로 디코딩하여 사용한다. - 암호화에 목적이 아니라 서명의 목적이 있다.
이 데이터가 유효한지 아닌지에 대한 무결성을 검증하기 위한 데이터이다.
비밀성을 보장하는 목적은 아니다.
JWT를 통해서 무엇을 할 수 있나?
한 사이트가 서버가 여러 개일 경우 검증 할 때 세션을 이용해서 클라이언트가 인증을 하는 것이 아니라 토큰을 통해 인증하기 때문에 어느 서버에 들어가더라도 상관이 없다.
JWT를 만들어서 클라이언트한테 던지고 클라이언트는 그 값을 가지고 개인정보를 요청할 때 서버는 JWT를 디코더해서 다시 정보를 만들것이다.
만든 상태에서 header,payload, 자기가 알고 있는 비밀키(위에서는 코스)로 HMAS SHA256으로 암호화를 해봤더니
인코드에서 파란색 글씨와 똑같이 나오면 유효하다라는 것이다.
'강의 따라하기 > JWT' 카테고리의 다른 글
20. JWT위한 yml파일 세팅 (0) | 2024.08.25 |
---|---|
19. JWT 프로젝트 세팅 (0) | 2024.08.25 |
17. JWT를 이해하기전 RFC문서란 (0) | 2024.08.24 |
16. JWT를 이해하기 전 RSA에 대해서 알아보자 (0) | 2024.08.24 |
15. JWT를 이해하기전 CIA에 대해서 알아보자 (0) | 2024.08.24 |
블로그의 정보
Hello 춘기's world
볼빵빵오춘기