inblog logo
|
vosw1
    Spring

    52. JWT

    송민경's avatar
    송민경
    Apr 02, 2024
    52. JWT

    1. JWT(JSON Web Token)

    • 웹 토큰 기반의 인증 및 권한 부여 시스템을 구현하기 위한 인터넷 표준
    • 주로 사용자의 인증 정보를 안전하게 전달하고 확인하는 데 사용
     
    • 구성
    - 헤더(Header) : JWT의 유형 및 사용하는 알고리즘을 지정
    일반적으로 이 정보는 JSON 형식으로 인코딩
    - 페이로드(Payload) : 실제로 전송되는 데이터 = 클레임(claim)
    사용자 정보와 추가적인 메타데이터가 포함될 수 있음
    JSON 형식으로 인코딩되어 있음
    - 서명(Signature) : 헤더와 페이로드의 내용을 해싱한 값
    서버 측에서 검증을 위해 사용
    서명은 시크릿 키를 사용하여 생성
     
    • 특징
    - 자가수용적(Self-contained)
    필요한 모든 정보를 자체적으로 가지고 있기 때문에 별도의 저장 공간이 필요하지 않음
    토큰을 전송할 때 추가적인 데이터베이스 조회를 필요로 하지 않음
    - 간결하고 확장 가능한(Compact and Extensible)
    JSON 형식을 사용 → 가볍고 간결하며, 필요에 따라 추가적인 클레임을 쉽게 추가할 수 있음
    - 보안(Secure)
    서명을 통해 토큰의 변조를 방지할 수 있음
    HTTPS와 같은 안전한 프로토콜을 사용하여 통신할 경우 정보가 안전하게 전송
     

    2. 사용해보기

    JWT.IO
    JSON Web Tokens are an open, industry standard RFC 7519 method for representing claims securely between two parties.
    JWT.IO
    https://jwt.io/
    JWT.IO
    • PAYLOAD에 userId, username 담을
    notion image
    notion image
    • sha256으로 단방향 해쉬로 인코딩되어 있음
    notion image
    notion image
    notion image
    • 서버가 검증
    • metacoding을 서버가 꼭 알아야 함 → 검증을 위해 사용
    • 다시 해쉬했을 때 같은 값이 나오는지 알 수 있음
    notion image
    • 토큰 생성과 검증을 서버가 하면 RSA를 할 필요 없음
    • 반드시 정보에 시간(TIME)이라는 키값이 있어야 함
    notion image
    notion image
    • 해커가 시도해도 metacoding을 모르기 때문에 인증 실패
    notion image
     
    Share article

    vosw1

    RSS·Powered by Inblog