JWT란
JWT(JSON Web Token)는 당사자 간에 정보를 JSON 개체로 안전하게 전송하기 위한 간결하고 자체 포함된 방법을 정의하는 개방형 표준( RFC 7519 )입니다. 이 정보는 디지털 서명되어 있으므로 확인하고 신뢰할 수 있습니다. JWT는 비밀( HMAC 알고리즘 사용)을 사용하거나 RSA 또는 ECDSA 를 사용하는 공개/개인 키 쌍을 사용하여 서명할 수 있습니다 .
서명* 된 토큰 에 중점을 둘 것!!
JWT 구조
위와 같이 ( . ) 을 기준으로 3가지로 나눠지는데 이 3가지 부분을 각각 JOSE 헤더(JSON Object Signing and Encryption), JWT Claim Set, Signature라고 부른다.
Reference : https://jwt.io
JOSE 헤더는 JWT 토큰을 어떻게 해석해야 하는지를 명시한 부분
alg = HS256 이란 알고리즘을 사용한 JWT
JWT Claim Set은 실제 토큰의 바디로 토큰에 포함할 내용
아래 목록이 등록된 공개 클레임 이름인데 모두 선택사항이다.
공개 클레임은 충돌을 방지를 위해서 정의된 것
- iss: 토큰을 발급한 발급자(Issuer)
- sub: Claim의 주제(Subject)로 토큰이 갖는 문맥을 의미
- aud: 이 토큰을 사용할 수신자(Audience)
- exp: 만료시간(Expiration Time)은 만료시간이 지난 토큰은 거절
- nbf: Not Before의 의미로 이 시간 이전에는 토큰을 처리하지 않아야 함을 의미
- iat: 토큰이 발급된 시간(Issued At)
- jti: JWT ID로 토큰에 대한 식별자
비밀 클레임이름은 서버와 클라이언트가 협의로 사용하는 이름을 의미
Signature 부분은 JOSE 헤더와 JWT Claim Set가 위변조되었는지를 검증하기 위한 부분
JOSE 헤더와 JWT Claim Set을 ( . )로 이어 붙익고 JOSE헤더에 있는 알고리즘으로 비밀키와 함께 HMAC 암호화를 한다.
비밀키는 외부에 노출되면 안 된다.
JWT는 생각보다 간단하다.
이제 Spring Security 를 이용한 JWT 발급, 인증, 인가 서버를 만들어 보자.
JWT란
JWT(JSON Web Token)는 당사자 간에 정보를 JSON 개체로 안전하게 전송하기 위한 간결하고 자체 포함된 방법을 정의하는 개방형 표준( RFC 7519 )입니다. 이 정보는 디지털 서명되어 있으므로 확인하고 신뢰할 수 있습니다. JWT는 비밀( HMAC 알고리즘 사용)을 사용하거나 RSA 또는 ECDSA 를 사용하는 공개/개인 키 쌍을 사용하여 서명할 수 있습니다 .
서명* 된 토큰 에 중점을 둘 것!!
JWT 구조
위와 같이 ( . ) 을 기준으로 3가지로 나눠지는데 이 3가지 부분을 각각 JOSE 헤더(JSON Object Signing and Encryption), JWT Claim Set, Signature라고 부른다.
Reference : https://jwt.io
JOSE 헤더는 JWT 토큰을 어떻게 해석해야 하는지를 명시한 부분
alg = HS256 이란 알고리즘을 사용한 JWT
JWT Claim Set은 실제 토큰의 바디로 토큰에 포함할 내용
아래 목록이 등록된 공개 클레임 이름인데 모두 선택사항이다.
공개 클레임은 충돌을 방지를 위해서 정의된 것
- iss: 토큰을 발급한 발급자(Issuer)
- sub: Claim의 주제(Subject)로 토큰이 갖는 문맥을 의미
- aud: 이 토큰을 사용할 수신자(Audience)
- exp: 만료시간(Expiration Time)은 만료시간이 지난 토큰은 거절
- nbf: Not Before의 의미로 이 시간 이전에는 토큰을 처리하지 않아야 함을 의미
- iat: 토큰이 발급된 시간(Issued At)
- jti: JWT ID로 토큰에 대한 식별자
비밀 클레임이름은 서버와 클라이언트가 협의로 사용하는 이름을 의미
Signature 부분은 JOSE 헤더와 JWT Claim Set가 위변조되었는지를 검증하기 위한 부분
JOSE 헤더와 JWT Claim Set을 ( . )로 이어 붙익고 JOSE헤더에 있는 알고리즘으로 비밀키와 함께 HMAC 암호화를 한다.
비밀키는 외부에 노출되면 안 된다.
JWT는 생각보다 간단하다.
이제 Spring Security 를 이용한 JWT 발급, 인증, 인가 서버를 만들어 보자.
'CS > JWT' 카테고리의 다른 글
JWT-사전지식-RSA-암호화 (0) | 2022.04.15 |
---|---|
JWT-사전지식-CIA (0) | 2022.04.08 |
JWT-사전지식-TCP/IP (0) | 2022.04.05 |
JWT-Token-왜-사용하는가 (0) | 2022.03.29 |
댓글