JWT (Json Web Token)
JWT란 Json Web Token으로 말그대로 JSON형식의 토큰에 대한 표준 규격이다.
주로 사용자의 인증정보를 담아 서버와 클라이언트가 안전하게 주고 받기 위해서 사용된다.
클라이언트가 로그인시 서버는 JWT Token을 발급해주고 클라이언트는 해당 JWT Token을 저장하고 서버에 데이터를 요청할 때 Header에 Bearer JwtToken
으로 담아서 요청하고 서버는 해당 토큰이 유효한지 변조가 되지는 않았는지 체크한다.
JWT 구조
JWT Token은 아래와 같이 Header, Payload, Signiture로 구성되어있다.
- Header: 토큰의 유형과 서명 알고리즘 명시
- Payload: 사용자의 인증/인가 정보 명시
- Signiture: 헤더와 페이로드가 비밀키로 서명되어 저장
1
<Header>.<Payload>.<Signiture>
EX
Token: eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiLthYzsiqTtirgiLCJleHAiOjE2OTQ3NjQzNDF9.M7C_cSPjOmcHWhmoS3v3nASaWC-5cxSAhDKiJdJ1DT30AHirzU8mvY5ygi8zS8J-WVUshnppfzYPcM9VRQGtRw
- Header
1
2
3
{
"alg": "HS512"
}
- Payload
1
2
3
4
{
"sub": "테스트",
"exp": 1694764341
}
JWT 장점
- Jwt Token에 사용자인증정보가 들어있기 때문에 추가로 세션인증을 안해도된다.
- 데이터의 위변조 방지
- 확장성이 우수하다.
- 인증을 위한 별도의 저장소가 필요없다.
JWT 단점
- 토큰을 탈취당하면 대처가 힘들다.
- Payload 자체는 암호화 되지 않아 중요한 정보는 담을 수 없다.
- 쿠키/세션과 다르게 토큰의 길이가 길어, 인증 요청이 많아질수록 네트워크의 부화가 심해진다.
테스트
URL: http://218.155.95.66:8300
테스트를 위해 만료시간을 1분으로 설정해두었다.