공부 기록
📌 JWT 토큰 인증, 인가 흐름

(A) 클라이언트는 Authorization 서버에게 인증(로그인)과 엑세스 토큰 발급을 요청한다.
(B) Authorization 서버는 클라이언트를 인증하고, 엑세스 토큰과 리프레시 토큰을 발급한다.
(C) 클라이언트는 엑세스 토큰과 함께 Resource 서버에 보호된 리소스를 요청한다.
(D) Resource 서버는 엑세스 토큰을 검증하고, 보호된 리소스를 리턴한다. C, D과정을 반복한다.
(E) C, D과정을 반복하다가, 엑세스 토큰이 만료되었고, 만료된 엑세스 토큰으로 Resource 서버에게 요청을 보낸다.
(F) Resource 서버는 만료된 엑세스 토큰에 대해 검증을 실패한다.
(G) 클라이언트는 엑세스 토큰이 만료되었다는 것을 알게 되었다. 그래서 새로운 엑세스 토큰을 발급 받기 위해 리프레시 토큰을 Authorization 서버로 보낸다.
(H) Authorization 서버는 리프레시 토큰 검증에 성공하면, 새로운 엑세스 토큰과 새로운 리프레시 토큰을 발급한다.
- 발급한 토큰이 탈취 당한다면? 토큰 무효화기능이 필요하다.토큰에 대한 해쉬값을 토큰 블랙리스트 db에 넣어서, 토큰을 무효화 한다.
- 만약 리프레시 토큰 마저 만료되었다면? (A) 과정을 통해 새로운 엑세스 토큰과 리프레시 토큰을 다시 발급받으면 된다.
📌 리프레시 토큰은 왜 사용할까?
- 만료 시간이 긴 엑세스 토큰만 사용한다면, 보안이 취약하다.
- 만료 시간이 짧은 엑세스 토큰만 사용한다고 하면, 사용자는 만료 시간이 끝날때마다 매번 로그인을 진행해야한다.
- 이런 문제로 인해 만료시간이 짧은 엑세스 토큰과 만료 시간이 긴 리프레쉬 토큰을 사용할 수 있다.
- 엑세스 토큰의 만료시간을 짧게 잡아 보안을 강화하고, 만료 시간을 길게 잡은 리프레쉬 토큰으로 엑세스 토큰이 만료될때마다 재발급 받게 한다.
- 이 경우 만료 시간이 긴 리프레쉬 토큰은 보안에 취약하지 않느냐고 할 수 있는데, 만료 시간이 긴 리프레쉬 토큰은 보안 설정이 된 쿠키에 담아 보관한다.