jwt는 JsonWebToken의 약자이고 클라이언트와 서버 간 정보를 안전하게 전달하기 위한 토큰 기반의 인증 방식이다.
인증된 사용자가 요청하는 정보를 확인하고 허용하는 데 사용된다
JWT는 세가지 부분으로 구성이 된다
Header와 Payload 그리고 Signature로 분류된다
Header는 토큰의 타입 및 해싱 알고리즘을 나타낸다
Payload는 토큰에 담기는 클레임(Claim) 정보가 포함돤다. 클레임은 토큰에 담을 정보를 의미하며, 클레임 유형에는 등록된(Claims Registered), 공개(Public), 비공개(Private) 클레임이 있다. 페이로드 부분에는 절대 민감한 정보를 담으면 안된다
Signature는 Header와 Payload를 인코딩하고, 시크릿 키(Secret Key)를 사용하여 서명한다
일반적으로 JWT는 사용자 로그인 시 생성되며, 서버는 이를 클라이언트에게 반환한다. 클라이언트는 이 토큰을 가지고 서버에 요청을 할 때마다 헤더에 담아 보낸다. 서버는 이 토큰을 검증하여 요청의 유효성을 판단하고, 필요한 권한이 있는지 확인한 후 요청을 처리한다
JWT의 가장 큰 특징은 stateless이다
JWT에서 "stateless"란 서버가 클라이언트의 상태를 유지하지 않고, 모든 정보를 토큰 자체에 저장하여 사용자의 상태를 추적하지 않는 것을 의미한다. 또한 필요한 모든 정보를 토크 자체에 포함하고 서명을 통해 변조가 불가능하도록 보호한다
서버는 토큰을 검증하기 위한 추가 저장 공간이 필요 없이 토큰 자체를 통해 요청의 유효성을 판단할 수 있고 확장성과 유연성을 높여준다
'스프링 키워드' 카테고리의 다른 글
Hexagonal Architecture(헥사고날 아키텍쳐) (0) | 2024.01.11 |
---|---|
0108 트랜잭션 v2 (0) | 2024.01.08 |
N+1 문제 (0) | 2023.12.29 |
인터페이스 (0) | 2023.12.26 |
디스패쳐 서블릿(Dispatcher Servlet) (0) | 2023.12.14 |