1. Cliam 기반의 토큰
JWT는 Claim을 JSON형태로 표현(개행문자 등이 있으면 Header 파일에 넣기 어렵기 때문에 base64 인코딩을 하여 하나의 문자열로 변환)
1) 사용자 인증 후 토큰 생성
- 서버에서 별도로 저장 x, 사용자 정보나 권한을 토큰에 넣어서 저장
2) API 호출시 token과 함께 보낸다.
2. 변조 방지
토큰이 변조 되지 않는다고 증명 -> 무결성
이 무결성은 signature나 HMAC을 사용하여 보장한다.
(원본 메시지에서 해쉬값 추출 + 비밀키로 복호화 -> 생성된 문자열을 토큰의 뒤에 삽입)
이로써 비밀키를 모르면 HMAC을 얻을 수 없다.
궁금점) 왜 비밀키로 암호화를 하지 않고 복호화를 하는가? 해쉬값이 이미 암호화가 되어서 그런가?
3. 서명 생성 방식
메시지를 HMAC 을 이용하여 무결성 보장했지만 보안을 위해 서명 방식을 추가했다. 서명 알고리즘 정보를 JSON으로 표 후 BASE64 인코딩한 후 문자열을 claim 정보 앞에 붙인다.
참고사이트
'IT > BackEnd' 카테고리의 다른 글
Mysql UDF 작성 (0) | 2019.03.20 |
---|---|
Crawling을 위한 Selenium, Chrome Driver 설치 (0) | 2018.07.15 |
SSL 인증서 발급 및 Nginx 적용. 그리고 체인 이슈 해결하기 (1) | 2018.02.28 |
Atom Remote-FTP package 소개 (0) | 2017.11.02 |