JWT, 그리고 OAuth

2022. 2. 11. 16:17Spring

728x90

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

 

JWT(Json Web Token) 란 무엇일까? (서버 기반 인증 / 토큰 기반 인증)

JWT에 대해 알아보기 전에 먼저 "토큰 기반 인증"과 "서버 기반 인증"에 대해 알아보자. 서버 기반 인증 시스템이란? (Session / Cookie) 세션 기반의 인증 시스템이다. 서버 측에서 사용자들의 정보를

dev-coco.tistory.com

http://www.opennaru.com/opennaru-blog/jwt-json-web-token/

 

JWT (JSON Web Token) 이해하기와 활용 방안 - Opennaru, Inc.

JWT 는 JSON Web Token의 약자로 전자 서명 된 URL-safe (URL로 이용할 수있는 문자 만 구성된)의 JSON입니다.JWT는 속성 정보 (Claim)를 JSON 데이터 구조로 표현한 토큰으로 RFC7519 표준 입니다.

www.opennaru.com

https://github.com/vaquarkhan/vaquarkhan/wiki/JWT-vs-OAuth

 

GitHub - vaquarkhan/vaquarkhan

Contribute to vaquarkhan/vaquarkhan development by creating an account on GitHub.

github.com

https://showerbugs.github.io/2017-11-16/OAuth-란-무엇일까

 

OAuth 란 무엇일까 · Showerbugs

OAuth 란 무엇일까 정리중 아래와 같은 로그인 창을 보셨을 것입니다. 별도의 회원가입 없이 로그인을 제공하는 플랫폼의 아이디만 있으면 서비스를 이용 할 수 있습니다. 외부 서비스에서도 인

showerbugs.github.io

 

728x90