JWT
JWT는 JSON Web Token 의 약어로 인증에 필요한 정보들을 암호화시킨 토큰이다.
HTTP 헤더에 JWT 토큰을 넣어 서버가 클라이언트를 식별한다.클라이언트가 서버에 접속하면 서버에서 클라이언트에게 인증되었다는 증명으로 토큰을 생성해 부여한다.이 토큰을 받은 클라이언트는 다시 서버에 요청을 보낼 때 헤더에 발급받은 토큰을 넣어서 요청한다. 그 후 서버는 클라이언트가 요청한 토큰이 서버에서 발급한 토큰과 일치한지 검토하여 인증과정을 처리한다.
JWT 구조
JWT는 . 을 기준으로 Header,payload,Signature 로 나누어진다.
Header
Header 에는 alg,typ 라는 두 가지 정보가 들어가있다.
- alg: 서명 암호화 알고리즘
- typ: 토큰 유형 ( JWT)
payload
Payload 에는 JSON 형태로 토큰에서 사용할 여러가지 정보들이 담겨져 있는데 이걸 Claim 이라고 한다.
즉 서버와 클라이언트가 주고받을 때 사용될 정보에 대한 내용을 담고있다.
verify signature
signature는 인코딩된 Header와 Payload를 더한뒤 비밀키로 해싱하여 생성한다.
Header와 Payload 는 단순히 인코딩된 값이기 때문에 다른 사람이 복호화 할 수 있지만 signature는 서버에서 관리하는 비밀키가 유출 되지 않는 이상 복호화 할수 없다. 따라서 토큰의 위변조 여부를 확인하는데 사용된다.
JWT 정리
JWT는 인증을 위한 별도의 저장소와 별도의 I/O 작업이 필요 없어 인증처리가 빠르고 확장성이 우수하다.
하지만 토큰의 길이가 늘어날수록 네트워크 부하가 있고 특정 토큰을 강제로 만료시키기가 어렵다.
'WEB' 카테고리의 다른 글
[WEB] MVC 패턴 (0) | 2022.07.18 |
---|---|
[WEB] HTTP (0) | 2022.07.05 |
[WEB] WEB Sever, WAS (1) | 2022.06.16 |
[WEB] ORM (1) | 2022.06.06 |
[WEB] 쿠키와 세션 그리고 로컬 스토리지 (0) | 2022.06.03 |