JWT 인증
JWT(JSON 웹 토큰)는 HTTP 권한 부여 헤더 및 URI 쿼리 매개변수와 같이 공간이 제약된 환경을 위한 간결한 클레임 표현 형식입니다. 청구는 청구 이름 및 청구 값을 포함하는 이름-값 쌍으로 표시됩니다.
JWT의 청구는 JWS (JSON Web Signature) 구조의 페이로드 또는 JWE (JSON Web Encryption) 구조의 일반 텍스트로 사용되는 JSON 오브젝트로 인코딩됩니다. JWT 청구는 디지털로 서명되거나 MAC (Message Authentication Code) 로 무결성 보호될 수 있으며 암호화될 수도 있습니다.
JWT 개요
JWT는 JWS 또는 JWE 구조에서 인코딩되는 JSON 오브젝트로 청구 세트를 표시합니다. 이 JSON 오브젝트는 JWT 청구 세트입니다. JSON 오브젝트는 0개이상의 이름-값 쌍 (또는 멤버) 으로 구성되며, 여기서 이름은 문자열이고 값은 임의의 JSON값입니다. 이 멤버는 JWT로 표시되는 청구입니다. JWT 청구 세트 내의 구성원 이름을 청구 이름이라고 합니다. 해당 값을 청구 값이라고 합니다.
JWT는 마침표('.') 문자로 구분된 URL 부분의 시퀀스로 표시됩니다. 각 부분에는 base64url-encoded 값이 포함됩니다. JWT의 파트 수는 JWS 압축 직렬화를 사용하는 결과 JWS 또는 JWE 압축 직렬화를 사용하는 JWE의 표시에 따라 다릅니다.
JWT 유형
JWT 예제
일반적인 JWS의 형식은 <기본 64 URL 인코딩된 헤더 json>.<기본 64 UK로 인코딩된 페이로드 json>.<기본 64 URL 인코딩된 서명>입니다
Header
{
"alg": "RS256",
"typ": "JWT",
"kid": "a1"
}
Payload
{
"sub": "1234567890",
"name": "John Doe",
"admin": true,
"iat": 1516239022,
"exp": 1531762065
}eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6ImExIn0
.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMiwiZXhwIjoxNTMxNzYyMDY1fQ
.z4qfO0leZK2mYp_w-jFNidTx-Ri0PRMHLsOAG1Den7ZR4QntIJhU17U0afgoe5VzISXS6jW61ga3XEk39ey1G7a_-ARIVZLYN11fHDhsPuzN7PPkbT
5uWpHEUhVWRR8dxHqXmNiDaWjNhTnzHCBpfrRHj5pR_dzubbuE_uPuvDk샘플에 설명된 대로 JWS에는 다음 파트가 있으며 "." 로 구분됩니다. 문자.
- 헤더 =
eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6ImExIn0 - 페이로드 =
G4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMiwiZXhwIjoxNTMxNzYyMDY1fQ - 서명 =
z4qfO0leZK2mYp_w-jFNidTx-Ri0PRMHLsOAG1Den7ZR4QntIJhU17U0afgoe5VzISXS6jW61ga3XEk39ey1G7a_-ARIVZLYN11fHDhsPuzN7PPkbT5uWpHEUhVWRR8dxHqXmNiDaWjNhTnzHCBpfrRHj5pR_dzubbuE_uPuvDk