2022. 2. 11. 16:17ㆍSpring
JWT란?
JWT란 Json Web Token의 약자로 인증에 필요한 정보를 암호화 시킨 토큰이다.
토큰 자체를 정보로 사용하는 Self-Contained 방식으로 정보를 안전하게 전달한다.
인증 과정
1. 사용자가 id와 password를 입력하여 로그인을 시도
2. 서버는 요청을 확인하고 secret key를 통해 Access token을 발급
3. JWT토큰을 클라이언트에 전달
4. 클라이언트에서 API를 요청할 때 클라이언트가 Authorization header에 Access token을 전송
5. 서버는 JWT Signature를 체크, Payload로부터 사용자 정보를 확인해 데이터를 반환
6. 클라이언트의 로그인 정보를 서버 메모리에 저장하지 않기 때문에 토큰기반 인증 메커니즘을 제공
JWT 구조
JWT는 세 파트로 나누어지며, 각 파트를 점(.)으로 구분한다.
각 순서대로 헤더(Header), 페이로드(Payload), 서명(Signature)로 구성되고,
JSON 형태인 각 부분은 BASE64로 인코딩 되어 표현한다.
1. Header
토큰의 타입(typ)과 해시를 암호화할 알고리즘(alg)으로 구성된다.
alg는 Signature 및 토큰 검증에 사용된다.
{
"alg":"HS256",
"typ":"JWT"
}
2. Payload
토큰에 사용자가 담고자 하는 정보를 담는 곳
Payload에는 토큰에서 사용할 정보들의 조각인 Claim이 담겨있다.
토큰의 발급자, 제목, 대상자,. 만료시간, 활성 날싸, 발급시간 등이 담겨있다.
3. Signature
토큰을 인코딩하거나 유효성 검증을 할 때 사용하는 고유한 암호화 코드이다.
Geader와 Payload의 값을 각각 BASE64로 인코딩하고 ,인코딩한 값을 비밀키를 이용해 헤더에서 정의한 알고리즘으로 해싱을 하고, 이 값을 다시 BASE64로 인코딩하여 생성한다.
oauth란?
인터넷 사용자들이 비밀번호를 제공하지 않고 다른 웹사이트 상의 자신들의 정보에 대해 웹사이트나 애플리케이션의 접근 권한을 부여할 수 있는 공통적인 수단으로서 사용되는 접근 위임을 위한 개방형 표준이다.
oauth 구성
Resource Server: Client가 제어하고자 하는 자원을 보유하고 있는 서비스 : Facebook, Google, kakao, naver
Resource Owner: 자원의 소유자 : 로그인을 하는 유저
Client : Resoure Server에 접속해서 정보를 가져오고자 하는 클라이언트(웹 어플리케이션)
oauth 인증 과정
참고
https://dev-coco.tistory.com/103
http://www.opennaru.com/opennaru-blog/jwt-json-web-token/
https://github.com/vaquarkhan/vaquarkhan/wiki/JWT-vs-OAuth
https://showerbugs.github.io/2017-11-16/OAuth-란-무엇일까
'Spring' 카테고리의 다른 글
io.awspring 라이브러리를 활용한 Spring-Amazon S3 연동 (0) | 2023.09.06 |
---|---|
spring 환경에서 redis pub-sub을 이용한 멀티 캐스팅 (0) | 2023.07.15 |
Spring boot oauth2로 로그인하기 (0) | 2022.02.13 |
Intellij 에서 Spring MVC 프로젝트(Gradle) 생성 (0) | 2022.01.28 |