일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 보안취약점
- 자바
- table
- EXTJS
- mssql
- 스프링부트
- springboot
- Intellij
- component
- Vue
- 데이터베이스
- crud
- jdk
- restapi
- 쿼리
- java
- 자바스크립트
- DATABASE
- JS
- 컴포넌트
- javascript
- 개발공부
- 스프링
- 개발
- GIT
- React
- Spring
- 리액트
- reactjs
- sql
- Today
- Total
준준의 기록일지
[보안] JWT (JSON WEB Token) 본문
"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."
JWT : JSON Web Token의 약자로 전자 서명된 URL-safe(URL로 이용할 수 있는 문자로만 구성된)의 JSON이다.
특징
전자 서명은 JSON의 변조를 체크 가능
속성 정보(Claim)를 JSON 데이터 구조로 표현한 토큰으로 RFC7519 표준이다.
서버와 클라이언트 간 정보를 주고 받을때 Http Request Header에 JSON 토큰을 넣은 후 서버는 별도의 인증 과정없이 헤더에 포함되어 있는 JWT 정보를 통해 인증한다.
HMAC 알고리즘을 사용하여 비밀키 또는 RSA를 이용한 Public Key / Private Key 쌍으로 서명 가능하다.
JWT 토큰 구성
세 파트로 나뉘며, 점으로 구분한다. 순서대로 헤더, 페이로드, 서명으로 구성된다.
Header
토큰의 타입과 해시 암호화 알고리즘으로 구성되어 있다. 첫번째는 토큰의 유형(JWT)을 나타내고 두번째는 HMAC, SHA256 또는 RSA와 같은 해시 알고리즘을 나타내는 부분이다.
Payload
토큰에 담을 클레임(claim)정보를 포함하고 있다. payload에 담는 정보의 한 '조각'을 클레임이라고 부르고 이는 name /value의 한 쌍으로 이루어져있다. 토큰에는 여러개의 클레임들을 넣을 수 있다.
클레임의 정보는 등록된 (registered) 클레임, 공개(public) 클레임, 비공개(private)클레임으로 세 종류가 있다.
Signature
secret key를 포함하여 암호화되어 있다.
Base64 인코딩의 경우 "+", "/", "="이 포함되지만 JWT는 URI에서 파라미터로 사용할 수 있도록 URL-Safe한 Base64url 인코딩을 사용한다.
Base64 인코딩은 언제하지? Binary Data를 텍스트로 바꿔주는 Encoding으로 Binary Data를 Character set에 영향을 받지 않는 공통 ASCII 영역의 문자로만 이루어진 문자열로 바꾸는 인코딩 방식이다.
JWT 자체를 auth token으로 사용?
출처 http://www.opennaru.com/opennaru-blog/jwt-json-web-token/
https://effectivesquid.tistory.com/entry/Base64-%EC%9D%B8%EC%BD%94%EB%94%A9%EC%9D%B4%EB%9E%80
'보안' 카테고리의 다른 글
[Spring Security] DelegatingPasswordEncoder after (MessageDigestPasswordEncoder is deprecated) (0) | 2021.12.02 |
---|