JWT(Json Web Token)은 통신 정보를 JSON형식으로 사용하여 안전하에 전송하기 위해 사용한다.
JWT는 토큰 자체에 정보가 포함되어 있는 클에림 기반 토큰이다. 일반적인 애플리케이션에서 JWT는 주로 인증과 인사를 구현하기 위해 사용된다.
헤더에는 토큰의 암호화 알고리즘이나 타입을 기재
페이로드에는 데이터(만료인, 사용자 정보 등)을 기재
시그니처는 헤더와 페이로드가 변조되지 않았는지 판단하기 위해 사용되는데, 헤더와 페이로드를 비밀 키를 사용하여 헤더에 명시된 암호화 알고리즘으로 암호화아혀 시그니처가 만들어진다.
JWT를 사용하여 인가를 구현하는 경우, 클레임 기반 토큰의 특성 덕분에 세션 기반 인증에 비해서 사용자 정보를 조회하기 위한 추가적인 작업이 필요하지 않다. 또한, 서버가 상태를 관리하지 않기 때문에 서버가 이중화된 환경에서도 사용자의 로그인 정보를 일관성 있게 관리할 수 있다. (즉, 세션 불일치 문제가 발생하지 않는다)
유의할 점
- 디코딩이 쉽기에, 페이로드에 민감한 정보를 담는 것에 유의
- 시크릿 키의 복잡도가 낮은 경우, 무작위 대입 공격에 주의 필요
- JWT탈취에 유의해야한다. 리프레시 토큰 도입 여부 등
- JWT none 공격 유의. 공격자가 토큰 헤더에 명시된 알고리즘을 none으로 변경하여, 페이로드가 변조되어도 시그니처 검증을 우회할 수 있는 공격기법
'cs(with 매일메일)' 카테고리의 다른 글
| [251222월] 정적 IP 주소 할당 방식과 동적 IP 주소 할당 방식의 차이점을 설명해주세요. (0) | 2026.01.13 |
|---|---|
| [251219금] 단일 장애 지점(SPOF)이란 무엇인가요? (0) | 2026.01.13 |
| [251217수] 트랜잭셔널 아웃박스 패턴에 대해서 설명해주세요. (0) | 2026.01.13 |
| [251216화] CSRF공격에 대해서 설명해주세요. (0) | 2026.01.13 |
| [251215월] NAT기능을 사용하는 이유를 알고 계신가요? (0) | 2026.01.13 |