JWT 기술분석 : access, refresh token의 개념과 관리전략

·2024년 11월 10일

용어 정리

목록 보기
7/8
post-thumbnail

access token과 refresh token은 왜 존재하나요?

  1. 액세스 토큰 (Access Token)
    액세스 토큰은 사용자가 로그인을 완료했을 때 발급되며, 짧은 시간 동안 유효하다. API 요청 시 권한을 확인하는 용도로 사용되며, 보통 사용자가 인증이 필요한 페이지에 접근할 때마다 서버에 전달된다. 토큰이 짧은 유효 기간을 가지기 때문에 만약 유출되더라도 짧은 시간 내에 사용할 수밖에 없어 보안에 유리하다.

  2. 리프레시 토큰 (Refresh Token)
    리프레시 토큰은 액세스 토큰의 유효 기간이 만료되었을 때 새로운 액세스 토큰을 발급받기 위해 사용된다. 일반적으로 더 긴 유효 기간을 가지며, 서버에서 유효성을 확인한 후에만 액세스 토큰을 재발급하는 데 사용된다. 리프레시 토큰이 유출될 경우 보안 위험이 있기 때문에, 서버는 추가적인 보안 검증을 통해 리프레시 토큰을 보호하는 것이 중요하다.

  • 요약
    • 액세스 토큰은 짧은 유효 기간을 가지므로 유출 시 위험이 적다.
    • 리프레시 토큰은 액세스 토큰 갱신을 통해 사용자의 로그인이 유지될 수 있도록 한다.

쿠키, 세션, 토큰은 각각 무엇을 말하는 것인가요?

  1. 쿠키 (Cookies)
    쿠키는 웹 브라우저에 저장되는 작은 데이터 조각. 쿠키는 서버가 아닌 클라이언트 측에서 관리되며, 주로 사용자의 설정이나 인증 정보를 저장한다. 예를 들어, 자동 로그인 기능, 장바구니 정보 등을 쿠키로 관리할 수 있다.

  2. 세션 (Session)
    세션은 서버에 저장된 사용자와의 연결 정보. 사용자가 로그인하면 서버는 고유한 세션 ID를 생성하여 사용자에게 부여하고, 해당 ID를 통해 사용자의 상태를 추적한다. 세션은 보통 일정 시간 동안 유지되며, 일정 시간 동안 활동이 없으면 자동으로 만료된다.

  3. 토큰 (Tokens)
    토큰은 인증 정보나 권한을 포함한 데이터 덩어리로, 보통 JSON Web Token (JWT) 형태로 사용된다. JWT는 사용자 정보를 담고 있으며, 서버와 클라이언트 간에 데이터를 주고받을 때 자주 사용된다. 토큰은 쿠키나 로컬 스토리지 등에 저장하여 사용한다.

  • 쿠키, 세션, 토큰의 차이
    • 쿠키와 세션은 주로 사용자 상태 정보를 관리하는 데 사용되며, 쿠키는 클라이언트에, 세션은 서버에 저장된다.
    • 토큰은 서버에서 발급받은 인증 정보를 담고 있으며, 주로 클라이언트 측에서 관리된다.

각 token은 어디에 저장해야 안전한가요?

토큰을 저장하는 위치는 보안상 매우 중요하다. 잘못된 위치에 저장하면 보안 취약점을 노출할 수 있다.

  1. 액세스 토큰
    액세스 토큰은 브라우저의 메모리, 즉 상태 관리 라이브러리, 컴포넌트 상태 등에서 관리하는 것이 일반적이다. 만약 HTTP 요청마다 필요한 경우 HTTP 헤더에 포함하여 보내되, 저장 위치를 로컬 스토리지나 세션 스토리지로 사용하는 경우도 있다.

  2. 리프레시 토큰
    리프레시 토큰은 유효 기간이 길고, 액세스 토큰 재발급에 사용되므로 보안이 더욱 중요하다. 서버의 쿠키를 통해 HttpOnly 쿠키로 설정하는 방법이 가장 안전하며, 이 쿠키 설정은 JavaScript로 접근할 수 없으므로 크로스 사이트 스크립팅(XSS) 공격에 안전하다.

  • 요약
    • 액세스 토큰: 브라우저 메모리, 로컬 스토리지, 또는 세션 스토리지에 저장
    • 리프레시 토큰: 서버 쿠키에 저장하고, HttpOnly 옵션을 사용하여 보안 강화
profile
웹 프론트엔드 개발자

0개의 댓글