개발자 노트

JWT 형식에 대한 의문 WITH RFC 7519 본문

Web

JWT 형식에 대한 의문 WITH RFC 7519

jurogrammer 2022. 6. 21. 00:50

형식

RFC에 작성된 JSON 포맷과 라이브러리들이 구현한 JSON 포맷이 다르다!?

RFC 7519 3.1

을 보시면 동일한 값을 나타내는 JSON이 여러 개일 수 있으므로 애매모호함을 제거하기 위해 다음과 같이 포맷을 정의하고 있습니다.

컴마 뒤에는 \r \n 스페이스바가 따른다.

그래서 아래의 포맷이 있으면

{
  "alg": "HS256",
  "typ": "JWT"
}

문자열을 UTF-8 기준으로 8진수로 변환할 경우엔 이와 같습니다.

   [123, 34, 116, 121, 112, 34, 58, 34, 74, 87, 84, 34, 44, 13, 10, 32,
   34, 97, 108, 103, 34, 58, 34, 72, 83, 50, 53, 54, 34, 125]

, \r \n 스페이스바의 8진수 표현은 아래와 같습니다.

44, 13, 10, 32

12번 ~ 15번 인덱스에 나타납니다.

그래서 이를 BASE64UrlEncoding하면

eyJ0eXAiOiJKV1QiLA0KICJhbGciOiJIUzI1NiJ9

이와 같다고 하는데,,,

jwt 디버깅 페이지, wiki 예시, jwt-java 라이브러리들이 모두

eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9

를 나타내고 있습니다.

결론은...

rfc문서를 잘못읽었네요.

같은 의미를 지닌 json의 형태가 여러 개 일 수 있습니다. 따라서 해당 문서에서는 애매한 부분을 제거하기 위해 json을 다음과 같이 정의한다~ 라는 것이였네요.

반응형

'Web' 카테고리의 다른 글

간소화한 Transaction  (0) 2022.07.15
로컬용 TLS 통신  (1) 2022.01.15
dataTable 구현  (0) 2021.06.01
[Browser] 크롬에서 console.log가 안되는 경우  (0) 2020.06.16
[Javascript]Transition 작동문제(infinite sliding window...)  (0) 2020.06.15
Comments