<aside>
💡 정리
- access token의 유효기간이 지났을 때 + refresh token의 유효기간이 남아있을 때
- 프론트에서 저장하고 있던 refresh token을 가지고 access token을 재발급 받는다.
- refresh token의 유효기간이 지났을 때
- 다시 로그인하여 access token, refresh token 둘 다 새로 발급받는다.
토큰관리와 RefreshToken 재발급
</aside>
- SecurityConfig
- CorConfig
- CORS란 다른 출처(Origin)의 자원을 사용할 수 있게 허용해주는 정책
- 보통 백엔드, 프론트엔드 나눠서 개발하게 되는데, 서로 다른 호스트, 포트를 사용한다.
그런 상황에서 스프링부트는 기본적으로
서로 같은 출처끼리만 요청을 주고 받을 수 있는 SOP 보안 정책을 사용하기 때문에
서버측에서 CORS 정책을 정의해서 사용해야 서로 다른 출처끼리 요청을 주고받을 수 있다.
- 필요한 이유 : 카카오, 네이버와 서버측 간에 토큰과 사용자 정보를 주고받기 위해서 필요하다.
JwtAuthorizationFilter
- 인증 처리를 JWT 토큰을 이용한다.
- access token이 없거나 기간이 만료되었을 때 상황에 맞게 응답을 보낸다.
- 정상적은 access token은 chain.doFilter를 통해 남은 필터와 컨트롤러들이 호출된다.

String userId = jwtService.validAccessToken(token);


- Redis 블랙리스트에 이 access token이 존재하면 false를 리턴한다.
JwtProperties
- JWT 토큰과 관련된 properties
- 시크릿 키 : 개인키. 암호화, 복호화에 쓰인다, 유출되어선 안된다. 우리 서버만 알고 있는 비밀키.
- access token은 탈취당하는 상황을 대비하여 보통 유효기간을 짧게 준다. ⇒ 1시간 유효기간을 가진다.
- refresh token은 2주의 유효기간을 가진다.
access token이 만료될 경우 서버에서 반복적인 로그인 요청을 요구하지 않도록 사용하는 토큰이다. DB에서 따로 관리하게끔 구성했다.

JwtToken
- access token, refresh token으로 구성되어 있다.
- 로그인하면 access token, refresh token을 모두 응답으로 전달하기 위해 만들었다.
