RefreshToken는 AccessToken을 재발급 받기 위한 토큰입니다.
노출되면 여러 문제가 발생하므로 보안에 각별히 주의해서 관리해야 하는데요.
구현하면서 어느 지점에서 어떻게 쓰이고 관리하는지 포스팅하겠습니다.
1. 최초 생성
- 보안을 강화하고 발급한 AccessToken을 효과적이고 중앙 집중적으로 관리하기 위해 RefreshToken을 저장합니다.
- 회원가입 완료 후 Redis에 저장됩니다.
- Redis는 다른 클라우드 인스턴스에 위치하여 클러스터로 구성합니다.
- Hash 자료구조에 {email : RefreshToken} 형식으로 저장합니다.
- RefreshToken 유효기간을 TTL로 설정합니다.
2. AccessToken 만료
- 사용중인 AccessToken이 만료된다면, RefreshToken을 사용하여 AccessToken를 재발급 받습니다.
- 서버는 API 요청을 처리하기 전, AccesToken가 만료되었는지 확인합니다 (만료되었다면 401 응답코드를 내려줍니다)
- 클라이언트가 401 응답을 받게되면, RefreshToken를 포함한 토큰 재발급 요청을 서버에 전송합니다.
- 서버는 RefreshToken의 유효성을 확인하고, 유효하다면 AccesToken을 발급합니다. (유효하지 않다면 로그인창으로 리다이렉트)
- 클라이언트는 새로 발급받은 AccesToken를 가지고 원래의 API 요청을 재시도합니다.
'Spring > Spring Security' 카테고리의 다른 글
[Spring Security][KoLiving] 4-5. BlackList Token (0) | 2023.10.03 |
---|---|
[Spring Security][KoLiving] 4-4. RefreshToken Rotation (0) | 2023.10.03 |
[Spring Security][KoLiving] 4-2. JwtProvider (2) | 2023.10.03 |
[Spring Security][KoLiving] 4-1. JwtAuthenticationFilter (0) | 2023.10.03 |
[Spring Security][KoLiving] 4. JWT 토큰 기반 인증 (0) | 2023.10.03 |