Back-end/Spring-Security

Spring Security- JWT AccessToken, RefreshToken

prden 2022. 12. 18. 16:51

AccessToken : 인증 -> 인가로 특정 리소스 접근 용도

RefreshToken : 만료된 AccessToken 발급받는 용도(DB 저장)

 

과정

  1. 사용자는 access_token이 만료되었을 때 만료 됐다는 응답을 받으면
  2. 클라이언트에서 다시, access_token과 refresh_token을 서버에 보냅니다.
  3. 서버에서는 refresh_token이 유효하다면, 클라이언트에게 다시 새로운 access_token을 발급해줍니다.

[글로벌 회사들의 토큰 정책]

  1. 액세스 토큰을 발급할 때, Refresh 도 새로 발급해서, 계속계속 보안성을 가져가면서 무한 로그인을 유지한다던가
  2. Refresh 의 기간이 끝나면 새로 로그인을 하도록 한다던가
  3. Refresh를 아예 사용하지 않는다거나 (애플의 정책)
  4. Refresh를 사용하지 않으면서 액세스 토큰을 short-term, long-term 2가지로 분리한다거나 (페이스북)
  5. 서비스에서 관리하는 고유한 키값으로 토큰을 재발급 받는다거나 (Google)

https://thalals.tistory.com/351

 

Spring Jwt Refresh Token  - 인증과 인가의 흐름

사내에서 Refresh Token 관련된 부분의 이슈가 생겨서, 리팩토링 하기전에 문제점에 대해 파악한 부분과 인증과 인가의 흐름을 명확하게 집고 넘어가야겠다는 필요성을 느껴 그에 대한 기록을 남깁

thalals.tistory.com

 

구현 내용 : 

1. Spring Security + JWT를 사용해 username, password를 통해 로그인 완료 시 Access Token 및 Refresh Token 발급

2. Access Token 만료 시 Refresh Token을 통한 Access Token 재발급 (로그인 상태 유지)

    2-1. Refresh Token의 갱신 주기 도달 시 Refresh Token도 함께 재발급 (로그인 유지 기간 연장)

3. Access Token + Refresh Token 만료 시 Error Response를 통한 인증 만료 처리

 

설계 및 Response : 

- AccessToken : Access Token / 만료기간 : 12시간

- RefreshToken : Refresh Token / 만료기간 : 3개월 / refresh 요청할 때 만료기간 1개월 미만 시 Refresh Token도 함께 재발급

 

https://hungseong.tistory.com/67

 

[Spring/Security/JWT] JWT를 사용한 로그인 및 Refresh Token을 활용한 로그인 상태 유지

구현 내용 : 1. Spring Security + JWT를 사용해 username, password를 통해 로그인 완료 시 Access Token 및 Refresh Token 발급 2. Access Token 만료 시 Refresh Token을 통한 Access Token 재발급 (로그인 상태 유지) 2-1. Refresh

hungseong.tistory.com

https://jangjjolkit.tistory.com/m/26