AccessToken : 인증 -> 인가로 특정 리소스 접근 용도
RefreshToken : 만료된 AccessToken 발급받는 용도(DB 저장)
과정
- 사용자는 access_token이 만료되었을 때 만료 됐다는 응답을 받으면
- 클라이언트에서 다시, access_token과 refresh_token을 서버에 보냅니다.
- 서버에서는 refresh_token이 유효하다면, 클라이언트에게 다시 새로운 access_token을 발급해줍니다.
[글로벌 회사들의 토큰 정책]
- 액세스 토큰을 발급할 때, Refresh 도 새로 발급해서, 계속계속 보안성을 가져가면서 무한 로그인을 유지한다던가
- Refresh 의 기간이 끝나면 새로 로그인을 하도록 한다던가
- Refresh를 아예 사용하지 않는다거나 (애플의 정책)
- Refresh를 사용하지 않으면서 액세스 토큰을 short-term, long-term 2가지로 분리한다거나 (페이스북)
- 서비스에서 관리하는 고유한 키값으로 토큰을 재발급 받는다거나 (Google)
https://thalals.tistory.com/351
구현 내용 :
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
https://jangjjolkit.tistory.com/m/26
'Back-end > Spring-Security' 카테고리의 다른 글
SpringSecurity를 사용할 때 일관적인 Exception 처리를 위해 (0) | 2023.06.27 |
---|---|
OAuth 2.0(Open Authorization 2.0) (0) | 2022.12.18 |
변경된 WebSecurityConfigurerAdapter (0) | 2022.10.10 |
페이지 수준 권한 부여 (0) | 2021.05.10 |
Spring Security의존제거, HttpServletRequest이용 (0) | 2021.05.09 |