티스토리 뷰

728x90

로컬 스토리지나 쿠키에 갱신 토큰(refresh token)을 저장하는 방식은 클라이언트 사이드에서 갱신 토큰을 관리하고 필요할 때마다 서버에 전송하여 액세스 토큰(access token)을 갱신하는 방법입니다.

이 방법을 사용할 때는 주로 다음과 같은 절차를 따릅니다:

토큰 발급: 사용자가 로그인하면, 서버는 액세스 토큰과 갱신 토큰을 생성합니다. 액세스 토큰은 짧은 유효 기간을 가지며, 갱신 토큰은 더 긴 유효 기간을 가집니다.

토큰 저장: 클라이언트는 받은 액세스 토큰과 갱신 토큰을 로컬 스토리지나 쿠키에 저장합니다.

토큰 사용: 클라이언트는 API 요청을 할 때마다 액세스 토큰을 Authorization 헤더에 넣어서 보냅니다.

토큰 만료: 액세스 토큰이 만료되면, 클라이언트는 서버에 갱신 요청을 보내고 서버는 새로운 액세스 토큰을 생성해서 보냅니다. 이 때, 클라이언트는 저장된 갱신 토큰을 같이 보내서 사용자를 식별합니다.

토큰 갱신: 클라이언트는 받은 새 액세스 토큰을 저장하고 이전의 액세스 토큰은 삭제합니다. 그런 다음 새로 받은 액세스 토큰을 사용하여 API 요청을 계속합니다.

로그아웃: 사용자가 로그아웃하면, 클라이언트는 로컬 스토리지나 쿠키에 저장된 액세스 토큰과 갱신 토큰을 모두 삭제합니다.

이 방법의 장점 중 하나는 서버 측에서 갱신 토큰을 저장하거나 관리할 필요가 없다는 것입니다. 이는 서버의 부하를 줄일 수 있습니다.

그러나 이 방법의 주요한 단점은 보안 문제입니다. 토큰이 클라이언트 사이드에 저장되므로 XSS(크로스 사이트 스크립팅) 공격이나 CSRF(크로스 사이트 요청 위조) 공격에 취약해질 수 있습니다. 따라서 쿠키를 사용할 경우 HttpOnly 옵션을 설정하여 스크립트를 통한 쿠키 접근을 차단하고, Secure 옵션을 설정하여 HTTPS를 통해서만 쿠키를 전송하도록 설정하는 것이 좋습니다. 또한, SameSite 속성을 적절히 설정하여 CSRF 공격을 방어할 수 있습니다.

이러한 이유로, 토큰 기반 인증을 사용하는 웹 애플리케이션의 경우, 가능한 한 보안을 강화하고 가능한 위험을 최소화하는 방향으로 설계하고 구현해야 합니다.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함