JWT(JSON 웹 토큰) 인증은 어떻게 작동합니까?
JWT(JSON 웹 토큰)란 무엇인가요?
JWT(JSON Web Token)는 당사자 간에 정보를 JSON 개체로 안전하게 전송하기 위한 개방형 표준(RFC 7519)입니다.
IdP(Identity Provider)의 개인 키/또는 공개 키 쌍을 사용하여 작고 읽을 수 있으며 디지털 서명됩니다. 따라서 토큰의 무결성과 신뢰성은 관련된 다른 당사자가 확인할 수 있습니다.
JWT를 사용하는 목적은 데이터를 숨기는 것이 아니라 데이터의 신뢰성을 보장하는 것입니다. JWT는 암호화되지 않고 서명되고 인코딩됩니다.
JWT는 토큰 기반 상태 비저장 인증 메커니즘입니다. 클라이언트 측 기반 무상태 세션이므로 서버는 세션 정보를 저장하기 위해 데이터 저장소(데이터베이스)에 전적으로 의존할 필요가 없습니다.
JWT의 구조
JSON 웹 토큰은 마침표로 구분된 세 부분으로 구성됩니다.
header.payload.signature
헤더
JWT 헤더는 서명 및 인코딩에 사용되는 토큰 유형과 알고리즘으로 구성됩니다. 알고리즘은 HMAC, SHA256, RSA, HS256 또는 RS256일 수 있습니다.
{
"typ": "JWT",
"alg": "HS256"
}
유효 탑재량
페이로드는 클레임이라는 세션 데이터로 구성됩니다. 다음은 우리가 사용할 수 있는 표준 클레임 중 일부입니다.
{
"sub": "user10001",
"iat": 1569302116
}
사용자 지정 클레임도 클레임 집합에 포함될 수 있습니다. 사용자 정의 클레임 세트를 사용하는 경우
JWT는 쉽게 디코딩될 수 있으므로 민감한 정보를 입력하지 마십시오.
{
"sub": "user10001",
"iat": 1569302116,
"role": "admin",
"user_id": "user10001"
}
서명
서명은 JSON 웹 토큰(JWT)에서 가장 중요한 부분입니다. 서명은 Base64url 인코딩을 사용하여 헤더와 페이로드를 인코딩하고 마침표 구분 기호로 연결하여 계산됩니다. 그런 다음 암호화 알고리즘에 제공됩니다.
// signature algorithm
data = base64urlEncode( header ) + "." + base64urlEncode( payload )
signature = HMAC-SHA256( data, secret_salt )
따라서 헤더나 페이로드가 변경되면 서명을 다시 계산해야 합니다. IdP(Identity Provider)만이 토큰의 변조를 방지하는 서명을 계산할 수 있는 개인 키를 가지고 있습니다.
어떻게 작동하나요?
기본적으로 ID 공급자(IdP)는 사용자 ID를 인증하는 JWT를 생성하고 리소스 서버는 비밀 솔트/공개 키를 사용하여 토큰의 진위를 해독하고 확인합니다.
보안
다른 인증 메커니즘과 마찬가지로 JWT에도 장단점이 있습니다.
알고리즘 이름을 명시적으로 검증합니다. JWT 헤더에 언급된 알고리즘에 전적으로 의존하지 마십시오. 알고 없음 공격(algo none attack), 헤더 스트리핑(header stripping)과 같은 헤더 기반 공격이 몇 가지 있습니다.
백엔드 서버에서 사용자 세션을 취소하는 것은 어렵습니다. JWT는 자동으로 만료되도록 설정되어 있으므로 만료되기 전에 공격자가 토큰을 얻으면 다양한 익스플로잇으로 이어집니다. 토큰을 무효화하기 위해 서버에 토큰 해지 목록을 작성하는 것이 완화하는 가장 좋은 방법일 수 있습니다.
XSS - 백엔드 서버는 항상 사용자 생성 데이터를 삭제해야 합니다.
CSRF - JWT가 쿠키에 지속되면 CSRF 공격이 가능합니다. 요청 원본 및 특별 요청 헤더를 사용하여 CSRF를 완화할 수 있습니다.
If you like this article, subscribe to the newsletter and Connect with me on to get updates on my future articles. ✅
Reference
이 문제에 관하여(JWT(JSON 웹 토큰) 인증은 어떻게 작동합니까?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/kcdchennai/how-jwt-json-web-token-authentication-works-21e7텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)