본문 바로가기

JWT

JWT (JSON Web Token) 란? (간단 설명)

728x90
반응형
SMALL

JWT 란

웹의 사용자 인증을 위해 사용하는 암호화된 토큰을 의미한다.

 

우리가 놀이동산을 가면 돈주고 사는 티켓 같은 느낌이다.

 

놀이동산 입구에서 직원에게 티켓을 보여주면, 인증이 되어 놀이기구를 이용할 수 있다.

 

JWT 생김새

Header , Payload , Signature 세가지로 나누어지며, base64 인코딩을 사용하여 표현한다.

 

 

1. Header (헤더)

토큰의 타입과 알고리즘 명시한다.

 

alg : 알고리즘 방식을 지정

typ : 토큰 타입 지정 ( ex) JWT)

 

 

2. Payload (페이로드)

유저의 정보를 의미한다. 담긴 정보의 한 조각을 claim 이라 부른다.

[대표적인 claim]

  • lssuer (iss)
  • subject (sub)
  • audience (aud)
  • expiration time (exp)
  • issued at (iat)

 

3. Signature (서명)

JWT의 가장 핵심적인 파트. 

서버에서 토큰의 정보가 서버로부터 생성 된 것인지 증명을 위한 수단으로 사용된다.

 

 

JWT 동작원리

1. 사용자가 id , pw 입력하고 로그인 api 요청한다.

2. 서버는 회원db에서 사용자 확인을 한다.

3. 토큰 생성..

4. 사용자에게 access token 전달

5. 요청할때마다 헤더에 jwt 실어서 요청한다.

6. 사용자 헤더에 들어있는 access token 이 유효한지 검증한다.

7. 검증 확인 후 평소처럼 응답 데이터를 던져준다. 

 

 

Access Token 를 통한 인증 방식의 문제점.

 

access token을 사용자에게 발급할 때는 유효기간이라는게 존재한다.

그 유효기간동안은 서버인증에 유효하다.

제 3자가 access token을 탈취해버리면, 제 3자가 서버에 접근이 가능하다. 위험함.

그래서 유효기간을 최대한 적게 access token을 발급해주면, 그나마 피해를 줄일 수 있다.

하지만 유효기간을 적게 만든다면, 매번 토큰을 생성해줘야 되는 불편함이 있다.

그래서 나온게

 

refresh token 이다.

사실 access token이랑 다를게 없는 토큰이다.

보통 access token 의 유효기간 1시간 , refresh token는 2주 이런식으로 사용을 한다.

 

위의 그림과 같이, 사용자가 로그인을 하면 서버에서는 access token을 만들어주며, 추가적으로 refresh token을 생성하여 사용자에게 

발급한다.

사용자는 현재 access token 과 refresh token 을 가지고 있는 상태이며, access token 유효기간 동안 자유롭게 서버에 api 요청하다가

access token의 유효기간이 지나면, 서버에서는 사용자가 가지고 있는 refresh token의 유효기간으로 판단을 하여, 유효하다면 access token을 재발급 해주며, 다시 이용할 수 있게 만들며, refresh token의 유효기간이 유효하지않다면 , 새로 둘다 재발급을 받아야 한다.

 

 

728x90
반응형
LIST

'JWT' 카테고리의 다른 글

인증 방식 종류(Cookie & Session & Token)  (0) 2022.09.12