JWT(JSON Web Token)는 당사자 간에 정보를 JSON 개체로 안전하게 전송하기 위한 간결하고 독립적인 방법을 정의하는 개방형 표준(RFC 7519)입니다. 이 정보는 디지털 서명되어 있으므로 확인하고 신뢰할 수 있습니다. JWT는 비밀(HMAC 알고리즘 포함) 또는 RSA 또는 ECDSA를 사용하는 공개/개인 키 쌍을 사용하여 서명할 수 있습니다.
JWT를 암호화하여 당사자 간에 비밀성을 제공할 수도 있지만 여기서는 서명된 토큰에 중점을 둘 것입니다. 서명된 토큰은 그 안에 포함된 클레임의 무결성을 확인할 수 있는 반면 암호화된 토큰은 다른 당사자로부터 해당 클레임을 숨깁니다. 공개/개인 키 쌍을 사용하여 토큰에 서명할 때 서명은 개인 키를 보유한 당사자만이 서명한 당사자임을 인증합니다.
JWT의 구조 및 특징
Header, Payload, Signature 이렇게 3개 부분으로 나누어져 있으며, 이 3개의 파츠는 "."(Dots)로 구분되어 있습니다.
그리고 실제 JWT가 사용 될 때는 Base64URL Encoding이 되어져서 사용됩니다.
JWT가 사용되는 예
권한 부여: JWT를 사용하는 가장 일반적인 시나리오입니다. 사용자가 로그인하면 이후의 각 요청에는 JWT가 포함되어 사용자가 해당 토큰으로 허용된 경로, 서비스 및 리소스에 액세스 할 수 있습니다. Single Sign On은 오버헤드가 적고 다양한 도메인에서 쉽게 사용할 수 있기 때문에 현재 JWT를 널리 사용하는 기능입니다.
정보 교환: JSON 웹 토큰은 당사자 간에 정보를 안전하게 전송하는 좋은 방법입니다. 예를 들어 공개/개인 키 쌍을 사용하여 JWT에 서명할 수 있으므로 보낸 사람이 누구인지 확인할 수 있습니다. 또한 헤더와 페이로드를 사용하여 서명을 계산하므로 콘텐츠가 변조되지 않았음을 확인할 수도 있습니다.
'IT 지식' 카테고리의 다른 글
OAuth 2.0 (RFC 6749)의 목적, 인증 절차와 인증 방식 (0) | 2023.06.11 |
---|---|
Authentication과 Authorization 차이 (0) | 2023.06.11 |
RFC 7523 - JWT 인증 방식의 특징, OAuth 2.0과의 관계 (0) | 2023.06.02 |
Open API와 OpenAPI의 개념과 차이 (0) | 2023.05.27 |
REST API의 개념과 동작 방식 (0) | 2023.05.27 |