STUDY/Python

JWT(JSON Web Token) | 자격 증명

nicesugi 2022. 5. 8. 16:54

 

 

인증에서 사용자가 자격 증명을 사용하여 성공적으로 로그인하면 JWT가 반환됨

JWT는 권한 부여와 정보 교환할 때 사용함

 

 

보안 문제를 방지하기 위해 세심한 주의가 필요함

-토큰을 필요 이상으로 오래 보관해서는 안 됨 !

-민감한 세션 데이터(서버에 저장되는)를 브라우저 저장소에 저장해서는 안 됨 !

 

 

구성

  • 헤더
    • JWT 토큰 유형
    • HMAC SHA256 or RSA 같은 서명 알고리즘
{
  "alg": "HS256",		#알고리즘
  "typ": "JWT"			#토큰
}

 

  • 유효 탑재량 : 클레임을 포함하는 페이로드 

     - 클레임은 사용자 및 추가 데이터에 대한 설명으로, 이름은 단 3자 !

     - 페이로드는 클레임을 인코딩하는 것

  • 등록된 클레임 : 미리 정의된 클레임 집합 ; iss, exp, sub, aud 등
  • 공개 클레임 : 사용자들이 마음대로 정의 가능하지만 충돌방지 네임스페이스를 포함하는 URI 정의해야함
  • 비공개 클레임 : 당사자 간에 정보를 공유하기 위한 맞춤 클레임
  •  
{
  "sub": "1234567890",		#등록된 클레임
  "name": "John Doe",
  "admin": true
}

 

  • 서명 

     - 인코딩된 헤더, 인코딩된 페이로드, 비밀, 헤더에 지정된 알고리즘을 가져와서 서명해야 함.

     - 메시지가 도중에 변경되지 않았는지 확인하는 데 사용되며

       개인 키로 서명된 토큰의 경우 JWT의 보낸 사람이 누구인지 확인할 수도 있습니다.

HMACSHA256(
  base64UrlEncode(header) + "." +		#헤더
  base64UrlEncode(payload),			#페이로드
  secret)

 

 

 

 

 

JWT 에 대해 더 알고싶다면 클릭 !

 

JWT.IO

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

jwt.io

 

반응형