JWT cookie vs localStorage

2021. 6. 1. 18:33Dev

반응형

기본적으로 JWT를 저장하고 핸들링하는 방법은 다음과 같다.

로그인 인증서버로 부터 받은 JWT, refresh_token 을 사용한다.

JWT는 메모리(즉 JS 변수)에 저장하고 refresh_token은 쿠키에 저장한다.

 

JWT는 브라우저가 새로고침되면 사라지지만 최초 요청에 refresh_token이 쿠키에 함께 요청되므로 새로운 JWT을 발급하므로 여전히 로그인 상태로 동작.

 

여기서 의문은 refresh_token 자체를 인증키 처럼 사용하면 되지 않을까 하는 것이다. 그것은 아래 3가지를 기대함.

인증 서버 부하 줄임.

Access Token 유효기간이 짧아 보안성 높임.

일정 기간 동안 사용하지 않으면 세션 만료 처리시킴.

 

리프레시토큰은 엑세스토큰이 만료된 경우 사용하며 이는 별도의 인증서버를 콜하여 토큰 유효성 검사를 한다. 액세스토큰은 인증서버를 

 

만약 인증 서버의 도메인이 웹 사이트 도메인과 same-site일 경우 JWT를 쿠키에서 사용할 수 있어보인다. 대신 CSRF 공격을 방지할 수 있도록 SameSite 쿠키 속성을 Lax나 Strict로 적용.(추가로 HttpOnly, Secure 쿠키 속성도 설정)

 

참고: same-site, 프론트엔드에서 JWT 다루기, refresh token

반응형

'Dev' 카테고리의 다른 글

Next.js 전환 후기  (0) 2021.06.27
Next.js meta 태그와 script 태그 다루기  (0) 2021.06.17
Next.js i18n  (0) 2021.05.29
amplify nextjs ssr  (0) 2021.05.02
redux saga eventChannel에 관하여  (1) 2020.07.29