JWT에 대한 간략한 소개. 서버에 접속하여 로그인하면 JWT 토큰을 받아 저장하고 인증에 사용한다. 이 시점에서 클라이언트는 액세스 토큰과 새로 고침 토큰을 받습니다. 이 시점에서 전달된 두 개의 토큰에 대해 알아보려고 합니다.
업데이트 토큰
액세스 토큰만을 사용하는 인증 방식을 사용하는 경우 액세스 토큰을 제3자에게 도난당할 경우 보안이 손상될 수 있습니다. 액세스 토큰은 서버에 저장되지 않고 토큰이 자체적으로 사용자 권한을 인증하기 때문에 토큰을 도난당하면 토큰이 만료될 때까지 토큰을 가진 사람은 누구나 액세스 권한을 얻을 수 있습니다.
토큰 유효기간을 짧게 함으로써 제3자에 의한 토큰 도용 및 사용 문제는 부분적으로 해결되지만 유효기간이 짧으면 사용자는 토큰이 만료될 때마다 다시 로그인해야 합니다. 따라서 현재 Refresh Token은 액세스 토큰의 수명을 단축하여 사용자가 오랫동안 로그인할 수 있도록 하는 데 사용됩니다.
토큰 발행 프로세스 업데이트
Access Token과 마찬가지로 Refresh Token은 JWT의 형태를 취하며 Access Token의 재발급에 관여합니다.
클라이언트가 처음으로 서비스를 사용하기 위해 로그인하고 성공하면 서버는 클라이언트에게 액세스 토큰과 새로 고침 토큰을 동시에 발급합니다.
이때 서버는 Refresh Token을 데이터베이스 또는 메모리에 저장하고 클라이언트는 발급된 Access Token과 Refresh Token을 쿠키, 세션, 웹 스토리지 등에 저장하고 인증 권한 요청 시 Access Token을 헤더에 삽입 . 기간이 만료되면 클라이언트에게 알리고 클라이언트는 액세스 토큰과 새로 고침 토큰을 함께 보냅니다. 서버는 수신한 Refresh Token과 메모리에 저장되어 있는 Refresh Token을 비교하여 유효기간을 확인하고 접근을 다시 토큰화한다.
사용자가 로그아웃하면 서버는 저장소에서 새로 고침 토큰을 지우고 액세스 토큰을 액세스 불가능으로 설정합니다.
다음 그림은 토큰 발행의 개략도입니다.

1: 클라이언트가 로그인하고 서버에 요청합니다.
2 ~ 4: 서버는 자격 증명을 서버 메모리에 저장된 데이터와 비교하여 검증하고 일치하면 액세스 토큰과 새로 고침 토큰을 발급합니다. 이때 액세스 토큰 수명은 짧고 갱신 토큰 수명은 깁니다.
5~6: 클라이언트의 요청에 있는 액세스 토큰이 만료되지 않은 경우 응답 데이터가 제공됩니다.
8~10: 클라이언트가 요청을 보낼 때 액세스 토큰이 만료되면 서버는 사용자에게 만료되었음을 알리는 오류 코드 또는 메시지를 보냅니다. B. 주 401.
11~13 : 클라이언트는 쿠키나 웹브라우저 메모리에 저장된 리프레시 토큰을 서버로 보내고, 서버는 리프레시 토큰의 유효성을 확인하고, 리프레시 토큰 값이 메모리에 저장되어 있는지 확인하고, 다음과 같은 경우 액세스 토큰을 재발급한다. 저장됩니다.
새로 고침 토큰은 로그인할 때마다 생성되며 로그아웃할 때마다 제거하거나 사용하지 않아야 하므로 디스크에 액세스해야 하므로 서버에 새로 고침 토큰을 저장하는 데 시간이 오래 걸립니다. 따라서 Redis와 같은 메모리 내 저장소를 사용하여 브라우징 속도를 높일 수 있습니다.
슬라이딩 세션
액세스 토큰과 새로 고침 토큰에 대해 알아보고 슬라이딩 세션, 액세스 토큰 및 새로 고침 토큰이 함께 사용되어 보안을 더욱 강화하는지 확인합니다.
슬라이딩 세션은 서비스를 지속적으로 사용하는 클라이언트로부터 요청을 받으면 자동으로 액세스 토큰 수명을 클라이언트로 연장하는 전략입니다.
그러나 사용자가 장시간 쓰기를 하고 토큰이 만료되지 않도록 서버에 요청하고 제대로 요청되지 않으면 쓰기 페이지에 들어가거나 쓰기를 시작할 때 토큰의 수명을 연장하기 위한 새로운 메커니즘이 필요합니다. 클라이언트가 토큰의 발급 시간 속성을 참조하여 갱신을 요청하는 방법도 있습니다.
슬라이딩 세션, 액세스 토큰, 새로 고침 토큰
위의 슬라이딩 세션 전략이 액세스 토큰 수명을 연장하는 것이라면 새로 고침 토큰과 슬라이딩 세션 성능을 이용하여 새로 고침 토큰 수명을 연장하는 방법도 있습니다.
새로 고침 토큰 수명이 연장되기 때문에 액세스 토큰 수명을 연장하는 것보다 빈도가 적습니다. 하지만 리프레쉬 토큰의 유효기간이 연장되기 때문에 휴대폰을 도난당해도 도둑은 여전히 사용자의 정보를 사용할 수 있다.
따라서 이를 방지하기 위해 추가 인증이 필요하거나 비밀 변경과 같은 중요한 정보 변경이 발생한 경우 새로 고침 토큰을 만료시키는 것이 좋습니다.

