본문 바로가기
Java & Spring

JWT Token(JSON Web Token)

by WhoamixZerOne 2022. 3. 7.

JSON 웹 토큰

JSON 웹 토큰(JSON Web Token, JWT)은 클레임(사용자 정보)을 안전하게 표현하기 위한 인터넷 표준(RFC 7519)이다.

 

JWT 구조


{
    "alg" : "HS256",
    "typ" : "JWT"
}
서명 생성을 위해 어떤 알고리즘을 사용할지 식별한다.
토큰의 타입을 지정한다.



{
    "loggedInAs" : "admin",
    "iat" : 1422779638
}
 
  • iss (Issuer)- 발급자
  • sub (Subject)- 주제
  • aud (Audience)- 대상
  • exp (Expiration Time)- 만료 시간
  • nbf (Not Before)- 활성 날짜
  • iat (Issued Time)- 발급 시간
  • jti (JWT ID)- 고유 식별자
다음 예는 표준 Issued Time 클레임(iat)과 사용자 지정 클레임(loggedInAs)을 보여준다.

HMAC-SHA256(
    base64urlEncoding(header) + '.' +
    base64urlEncoding(payload),
    secret
)
 서명은 Base64url 인코딩을 이용하여 헤더와 페이로드를 인코딩하고 이 둘을 점(.) 구분자로 함께 연결시킴으로써 계산된다. 해당 문자열은 그 뒤 헤더에 규정된 암호화 알고리즘(이번 경우에는 HMAC-SHA256)에 유입된다. Base64url 인코딩은 base64와 비슷하지만 각기 다른 영숫자를 사용하며 패딩(padding)은 제외한다.

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJsb2dnZWRJbkFzIjoiYWRtaW4iLCJpYXQiOjE0MjI3Nzk2Mzh9.qGQsbhR55bCg9Itm9hk_LHayO87LXusqa9_21u1sAwQ

Base64url 인코딩을 적용한 값 헤더.페이로드.서명 에 해당한다.

 

JWT Debugger에 Encoded 값을 위의 값으로 변경하면, 정보를 확인할 수 있다(JWT 토큰을 생성, 검증할 수 있는 디버거 서비스이다).

 

# 참조

 

JWT.IO

JSON Web Tokens are an open, industry standard RFC 7519 method for representing claims securely between two parties.

jwt.io

 

JSON 웹 토큰 - 위키백과, 우리 모두의 백과사전

JSON 웹 토큰상태인터넷 표준최초 출판일2010년 12월 28일 (2010-12-28)마지막 버전RFC 75192015년 5월조직IETF약어JWT JSON 웹 토큰(JSON Web Token, JWT, "jot”[1])은 선택적 서명 및 선택적 암호화를 사용하여 데

ko.wikipedia.org

 

 

 

'Java & Spring' 카테고리의 다른 글

Java 버전 관리 도구  (0) 2023.11.18
[Spring] 인터셉터(Interceptor) 적용  (0) 2022.04.17
JPA @MappedSuperclass  (0) 2022.03.07
JUnit @Before & @After  (0) 2022.03.07
Spring Boot 자동 환경 설정  (0) 2021.04.10

댓글