Home 웹 프로그래밍 지식. JWT 토큰 인증
Post
Cancel

웹 프로그래밍 지식. JWT 토큰 인증

JWT(JSON Web Token)

  • 웹 표준으로써 데이터의 JSON 객체를 사용하여 가볍고 자가 수용적인 방식으로 정보를 안전하게 전달할 수 있도록 설계된 토큰 기반 인증 방식이다.
  • JWT는 URL, HTTP Header, HTML Form과 같은 다양한 방식으로 전달할 수 있으며, 서버와 클라이언트 간의 인증 정보를 포함한다.
  • JWT는 Header, Payload, Signature 세 부분으로 구성된다.
  • Header는 JWT의 타입과 암호화 알고리즘 등을 포함하며, JSON 형식으로 인코딩 된다.
  • Payload는 클레임 정보를 포함하며, JSON형식으로 인코딩 된다.
    • 클레임 정보는 사용자 ID, 권한 등의 정보를 포함할 수 있다.
  • Signature는 Header와 Payload를 조합한 후, 비밀 키를 사용하여 생성된 서명 값이다. 서명 값은 토큰의 무결성을 보장하며, JWT를 조작하지 않았다는 것을 검증한다.

JWT 토큰을 통한 인증 과정

  1. 클라이언트가 서버에 로그인 요청을 보낸다.
  2. 서버는 로그인 요청을 검증하고, 유효한 사용자라면 JWT를 생성하여 클라이언트에게 반환한다.
  3. 클라이언트는 이후 요청에 JWT를 포함시켜 전송한다.
  4. 서버는 JWT를 검증하여, 클라이언트의 인증 여부를 판단한다.

장점과 단점

  • 장점
    • 토큰 인증 방식이므로, 서버 측에서 별도의 세션 저장소를 유지할 필요가 없다.
    • JSON 형식으로 인코딩 되므로, 다양한 플랫폼 간에 전송 및 구현할 수 있다.
    • Signature를 사용하여 무결성을 보장하므로, 토큰이 변조되었는지 여부에 대해 쉽게 검증할 수 있다.
  • 단점
    • JWT의 크기가 커질 경우, 네트워크 대역폭이 증가하게 된다.
    • JWT는 한 번 발급된 후에는 내부 정보를 수정할 수 없으므로, 만료 시간을 짧게 설정해야 된다.
    • JWT를 탈취당하면, 해당 토큰을 사용한 모든 요청이 인증되므로, 보안에 위협이 될 수 있다. 따라서, HTTPS와 같은 보안 프로토콜을 사용하여 JWT를 전송해야 한다.
This post is licensed under CC BY 4.0 by the author.

웹 프로그래밍 지식. Web Service의 인증

면접을위한 CS 지식. Chapter4-Database