- bcho.tistory.com/999 및 pyjwt.readthedocs.io 및 https://sanghaklee.tistory.com/47
;
- JWT 란?
- Claim based Token.
- Header.Payload.Signature 으로 구성 됨.
- 각각 Base64로 인코딩.
- 단순 Cookie/Session 인증 방식의 문제점
- Server Scale-Out 이슈.
- Cookie Client(PC,Mobile,...) 및 CORS 도메인 이슈.
- Session Repogitory 부하 이슈.
- Claim based Token
- 토큰 자체에 데이터(ID,권한,정보 등등)를 Claim-Set 으로 저장하여 활용하는 방식.
- 서버에서 별도의 조회 과정이 없어 부담이 덜 해질 수 있으나, 당연히 양날의 검이 될수있다.
- 개인정보는... 따로 암호화 해서 저장.
- 기본적으로는... 서버생성 이후엔, 제어가 안되기 때문에~ 만료시간 셋팅이 필수적이다.
- 구조
- Header
- {
- "typ": "JWT"
- "alg": 시그니처 HMAC에 사용되는 알고리즘. (SHA256, RSA, ... )
- }
- Payload : 토큰에 실질적으로 담을 데이터.
- {
- // https://jwt.io/introduction
- // 성격에 따라... Registered, Public, Private Claims 으로 나뉨.
- }
- Signature :
- HMAC_SHA256( base64(header)+"."+base64(payload) , secret)
- 해더 및 페이로드의 무결성 및 변조방지를 위해서, HMAC을 활용함.
- ...
- % Base64 란?
- Binary를 -> Text로 변경하는 Encoding이다.
- 8비트 이진 데이터 -> (각 OS 문자코드 영향받지 않는) ASCII 문자로만 구성된 문자열로 변환!
- ...
- % HMAC 이란?
- 해시 기반 메세지 인증 코드 (Hash-based Message Authentication Code)
- Message + Timestamp -func(Key)-> Hash
- "Message + Timestamp + Hash" 전송
- 서버에서는 해당 Message + Timestamp를 해당 Key를 통해 Hash와 일치하는지? 검증.
- (당연히 Timestamp는 시시각각 변한다.)
- 예) http body 위변조 방어
- Authorization:{{acqHmacHeader}}
- X-Authorization-Timestamp:{{acqHmacTimestamp}}
- X-Authorization-Content-SHA256:{{acqHmacContentSha}}
- X-Authenticated-Id: {{acqAccountID}}
- X-MMSessionToken
- X-RBXHmac-Timestamp
- X-RBXHmac-Content-SHA256
- % 다양한 Sign 방식!
- 단방향 해쉬 함수
- MD5(SHA-1), HAS-160, SHA-224
- SHA-256, SHA-384, SHA-512
- 양방향 암호화
- DES, 2TDEA, 3TDEA
- SEED,HIGHT,ARIA-128,AES-128,ARIA-128,AES-192, ARIA-256,AES-256
- 단방향 해쉬 함수
-끝-
'통신과 프로토콜 그리고 보안' 카테고리의 다른 글
OAuth (0) | 2019.11.10 |
---|---|
HTTP 와 SSL 및 보안 (0) | 2019.11.10 |
SMTP , (POP3) , (IMAP) (0) | 2019.11.10 |
SSH (TELNET) , (scp), (rsync) (0) | 2019.11.10 |
인터넷(Internet) 과 웹(Web) (0) | 2019.10.27 |