날짜: 2024-03-29
JWT (JSON Web Token) 토큰 기반 인증은 웹 API와 클라이언트 간의 안전한 통신을 위한 인증 방식입니다. 이 방식의 일반적인 생명주기와 베스트 프랙티스는 다음과 같습니다:
sub
, username
등)와 토큰의 유효 기간 (exp
) 등이 포함됩니다.Authorization
헤더에 Bearer {Token}
형식으로 JWT를 포함시켜 서버에 전송합니다.refresh_token
이 함께 발급되고 이를 이용해 새 access_token
을 받습니다.refresh_token
을 안전하게 저장해야 하며, access_token
만료 시 서버에 새 토큰을 요청합니다.refresh_token
을 무효화합니다. 즉, 해당 토큰으로 더 이상 새 access_token
을 발급받을 수 없도록 합니다.localStorage
또는 sessionStorage
에 토큰을 저장할 수 있습니다. httpOnly
쿠키도 사용될 수 있지만, CSRF 공격에 취약할 수 있습니다.XSS
와 같은 보안 위협으로부터 보호해야 합니다.HTTPS
를 통해 암호화되어야 합니다.exp
, nbf
, aud
, iss
등)이 유효한지 확인해야 합니다.refresh_token
이 노출되거나 사용자가 로그아웃한 경우, 해당 토큰을 무효화해야 합니다.jti
(JWT ID) 클레임을 사용하여 토큰을 추적함으로써 이루어질 수 있습니다.토큰 기반 인증 시스템은 강력하지만, 올바르게 구현되지 않으면 보안 취약점을 일으킬 수 있습니다. 따라서, 토큰을 안전하게 관리하고, 필요한 경우 적절히 갱신하며, 사용자의 로그아웃 요청에 응답하여 토큰을 무효화하는 것이 중요합니다. 클라이언트와 서버 모두에서 보안을 철저히 유지해야 하며, 적절한 보안 조치를 통해 JWT 인증 시스템의 안전성을 보장해야 합니다.