1. Cliam 기반의 토큰
JWT는 Claim을 JSON형태로 표현(개행문자 등이 있으면 Header 파일에 넣기 어렵기 때문에 base64 인코딩을 하여 하나의 문자열로 변환)




1) 사용자 인증 후 토큰 생성
- 서버에서 별도로 저장 x, 사용자 정보나 권한을 토큰에 넣어서 저장

2) API 호출시 token과 함께 보낸다.


2. 변조 방지

토큰이 변조 되지 않는다고 증명 -> 무결성

이 무결성은 signature나 HMAC을 사용하여 보장한다.
(원본 메시지에서 해쉬값 추출 + 비밀키로 복호화 -> 생성된 문자열을 토큰의 뒤에 삽입)
이로써 비밀키를 모르면 HMAC을 얻을 수 없다.

궁금점) 왜 비밀키로 암호화를 하지 않고 복호화를 하는가? 해쉬값이 이미 암호화가 되어서 그런가?


3. 서명 생성 방식

메시지를 HMAC 을 이용하여 무결성 보장했지만 보안을 위해 서명 방식을 추가했다. 서명 알고리즘 정보를 JSON으로 표 후 BASE64 인코딩한 후 문자열을 claim 정보 앞에 붙인다.




참고사이트


http://bcho.tistory.com/999

+ Recent posts