일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 젠킨스
- Vue 알아보기
- JDK1.3
- Vue
- docker mysql
- Spring Batch 강의
- Vue 강의
- 미국 배당주
- MYSQL
- gradle
- scrapy
- apache log4j
- python 기초
- spring boot 시작
- 티스토리 광고 수익
- 도커
- Python 기본편
- IntelliJ
- python
- docker
- spring Annotation
- Vue 배우기
- intelliJ plugin
- 구글 애드센스 수익
- docker 명령어
- 애드센스 수익
- Spring Batch
- 미국주식
- Spring
- AES256
나만의공간
JWT(Json Web Token) 이란? 본문
JWT(Json Web Token)의 약자로 전자서명된 URL-safe의 Json 입니다.
전자 서명은 Json의 변조를 체크 할 수 있게 되어 있습니다.
JWT는 속성정보를 Json 데이터 구조로 표현한 토큰으로 RFC7519 표준입니다.
JWT는 서버와 클라이언트 간 정보를 주고 받을 때 Http 리퀘스트 헤더에 Json 토큰을 넣은 후 서버는 별도의 인증 과정없이 헤더에 포함 되어 있는 JWT정보를 통해 인증합니다.
이떄 사용되는 Json 데이터는 URL-Safe 하도록 URL에 포함할 수 있는 문자만으로 만듭니다.
JWT는 HMAC 알고리즘을 사용하여 비밀키 또는 RSA를 이용한 Pubilc Key / Private Key 쌍으로 서명할 수 있습니다.
JWT와 관련된 표준인 JWS와 JWE란
JWS(Json Web Signature)은 간단히 말하면 "Json으로 전자 서명을 하여 URL-Safe문자열로 표현한것" 입니다.
JWE(Json Web Encryption)는 "Json을 암호화 하여 URL-Safe 문자열로 표현한 것" 입니다.
서명은 서명 할 때 사용한 키를 사용하여 JSON이 손상되지 않았는지 확인 할 수 있도록하는 것입니다.
URL Safe는 말 그대로 URL에 포함 할 수없는 문자를 포함하지 않는 것입니다.
JWT 토큰 구성
JWT는 세 파트로 나누어지며, 각 파트는 점로 구분하여 xxxxx.yyyyy.zzzzz 이런식으로 표현됩니다. 순서대로 헤더 (Header), 페이로드 (Payload), 서명 (Sinature)로 구성합니다.
Base64 인코딩의 경우 “+”, “/”, “=”이 포함되지만 JWT는 URI에서 파라미터로 사용할 수 있도록 URL-Safe 한 Base64url 인코딩을 사용합니다.
Header는 토큰의 타입과 해시 암호화 알고리즘으로 구성되어 있습니다. 첫째는 토큰의 유형 (JWT)을 나타내고, 두 번째는 HMAC, SHA256 또는 RSA와 같은 해시 알고리즘을 나타내는 부분입니다.
Payload는 토큰에 담을 클레임(claim) 정보를 포함하고 있습니다. Payload 에 담는 정보의 한 ‘조각’ 을 클레임이라고 부르고, 이는 name / value 의 한 쌍으로 이뤄져있습니다. 토큰에는 여러개의 클레임 들을 넣을 수 있습니다.
클레임의 정보는 등록된 (registered) 클레임, 공개 (public) 클레임, 비공개 (private) 클레임으로 세 종류가 있습니다.
마지막으로 Signature는 secret key를 포함하여 암호화되어 있습니다.
'IT > JAVA' 카테고리의 다른 글
자바 코딩 컨벤션 (Code Style) 적용 (0) | 2023.03.10 |
---|---|
JDK 설치 위치 및 설치 버전 확인 (맥북) (0) | 2022.12.05 |
맥북 STS(Eclipse) Class 파일 DeCompiler(디컴파일) 하는법 (0) | 2022.02.18 |
ModelMaper Package 오류 대응 (0) | 2021.12.18 |
Java 편의성 Util #1 (0) | 2021.12.17 |