JWT

김태훈·2024년 1월 8일
0

Spring

목록 보기
11/16

JWT

JWT는 JSON 포맷을 사용하여 사용자의 대한 속성을 저장하는 Web Token 입니다. 보통 Cookie를 사용하여 JWT를 저장합니다.

Web Token

웹 애플리케이션에서 사용자 인증 및 권한 부여를 위한 표준화된 방법 중 하나입니다. 특히, 웹 토큰은 클라이언트와 서버 간의 인증 정보를 안전하게 전송하기 위한 메커니즘으로 사용됩니다.

JWT의 구조

  • JWT는 누구나 복호화가 가능합니다.
    https://jwt.io/
    에서 가능하며

JWT 토큰에 대한 정보를 입력하면, 복호화해서 볼 수 있습니다.

Header는 토큰의 종류, 어떤 알고리즘으로 sign 할지 적혀 있습니다.

Payload

Payload에는 정보가 담겨있습니다. 권한이나, 사용자 유저에 대한 정보 등 필요한 데이터를 담아 Sign 시킵니다.
다른 사람들이 조회가 가능하기 때문에 민감한 정보를 담지 않는 것이 좋습니다.

Signature

서버의 secret key를 사용하여 base64 url로 인코딩한 헤더와 페이로드를 규정된 해시 알고리즘으로 서명합니다.

JWT의 장, 단점

장점

  • 토큰 자체가 인증된 정보이기 때문에 별도의 인증서 저장소가 필수가 아니다.
  • 클라이언트의 상태를 서버에서 저장하지 않아도 된다.
  • Signature를 공통/개인 키 암호화를 통해 막아 보완성이 증가했다.

단점

  • JWT의 페이로드의 데이터는 암호화되지 않고 base64로 인코딩한 값이므로, 누구나 확인할 수 있으므로 민감한 정보를 담으면 안 됩니다.
  • 비밀 키 값을 획득한다면, 데이터를 변조할 수 있으므로 비밀 키 값 관리를 잘 해야 합니다.
  • 토큰을 중간에 탈취당하면 만료시간까지 악의적으로 사용될 위험이 있습니다.

0개의 댓글