용어 정리
- JWT (JSON Web Token) : 인터페이스 역할을 해주는 추상적인 개념이고 실제 구현은 JWS와 JWE로 나누어진다.
- JWS (JSON Web Signature) : 서버에서 인증을 증거로 인증 정보를 서버의 Private Key로 서명한 것을 Token 화 한 것.
- JWE (JSON Web Encryption) : 서버와 클라이언트 간 암호화된 데이터를 Token화 한 것.
JWT
인증에 필요한 정보들을 암호화시킨 JSON 토큰을 의미한다. 그리고 JWT 기반 인증은 JWT 토큰(Access Token)을 TTP 헤더에 실어 서버가 클라이언트를 식별하는 방법이다.
토큰 인증 신뢰성을 가지는 이유
- 서버는 토큰 안에 들어있는 정보가 무엇인지 아는게 중요한 것이 아니라 해당 토큰이 유효한 토근인지 확인하는 것이 중요하기 때문에 , 클라이언트로부터 받은 JWT의 header, payload를 서버의 key 값을 이용해 시그니처를 다시 만들고 이를 비교하며 일채 했을 경우 인증을 통과시킨다.
- (TIP) JWT은 서명(인증)이 목적이다.
JWT는 Base64로 암호화를 하기 때문에 디버거를 사용해서 인코딩된 JWT를 1초만에 복호화할 수 있다.
복호화 하면 사용자의 데이터를 담은 Payload 부분이 그대로 노출되어 버린다. 그래서 페이로드에는 비밀번호와 같은 민감한 정보는 넣지 말아야 한다.
그럼 토큰 인증 방식 자체가 빛 좋은 개살구라고 생각할수도 있지만, 토큰의 진짜 목적은 정보 보호가 아닌, 위조 방지이다.
바로 위에서 소개했듯이, 시그니처에 사용된 비밀키가 노출되지 않는이상 데이터를 위조해도 시그니처 부분에서 바로 걸러지기 때문이다.
JWT 장단점 정리
JWS
-Header, Payload, Signature로 구성되며, Payload 영역에 발급자, 유효 기간 등 발급정보를 저장하고, Signature 영역의 전자서명을 통해 위변조 여부를 확인
JWS 구조 : Header (JSON)+ Payload(JSON) + Signature
[실제 예제]
Header
- alg : 서명 암호화 알고리즘(ex: HMAC SHA256, RSA)
- typ : 토큰 유형
Payload
- 토큰에서 사용할 정보의 조각들인 Claim 이 담겨있다.
Signature
- Header 및 Payload를 Base64 인코딩 후 암호화 기술을 이용하여 서명함으로써 접근토큰의 무결성 검증
jws 인증 메커니즘
1. Client A가 로그인
2. 서버에서는 payload 에 넣고 싶은 내용을 담은 후 (로그인한 사람의 정보, 접근 권한 등) 서명하고 Token 발행
3. 클라언트는 다음 통신에서 Token을 함께 전달
4. 서버에서는 Token 수신 후 서명 검증
5. 이후 정상 절차 수행
session 기반 token 인증 & JWT 인증 비교
두가지 인증 방식 비교하면
session 인증 대비 JWT 인증이 토큰 저장소를 따로 마련하지 않아도 되고, 절차적으로 편해보일 수 있지만,
각 방식마다 장단점이 있다.
-> 더 자세한 사항은 참고
session 기반 token 인증
참고 (JWT, JWS)
'마이데이터 > 마이데이터 용어' 카테고리의 다른 글
API Gateway란 (0) | 2023.09.11 |
---|---|
Access Token & Refresh Token (0) | 2023.09.08 |
공동인증과 사설인증 차이 (0) | 2023.09.07 |
OAuth2.0 마이데이터 (0) | 2023.09.06 |
TLS & mTLS (0) | 2023.09.05 |