세션 기반 인증(Session-Based Authentication):
토큰 기반 인증(Token-Based Authentication):
- 동작 원리: 사용자가 로그인하면 서버는 클라이언트에게 액세스 토큰을 발급합니다. 이 토큰은 클라이언트가 리소스에 접근할 때 사용됩니다.
- 상태 비유지: 서버는 클라이언트의 상태를 관리하지 않고, 각 요청에 필요한 정보를 토큰에 포함시켜 클라이언트에 전달합니다.
- 보안: 토큰은 서명되어 있어 변조가 어렵고, HTTPS와 함께 사용될 때 안전하게 전송됩니다. 또한 토큰은 일반적으로 세션과 달리 쿠키가 아닌 다양한 위치에 저장될 수 있습니다.
- 확장성: 토큰은 서버의 상태를 저장하지 않기 때문에 서버 측 리소스를 효율적으로 사용할 수 있으며, 분산 시스템에서 확장성이 용이합니다.
세션 기반 인증은 전통적이고 간단한 방법이지만 서버 측에서 상태를 유지해야 하며, 토큰 기반 인증은 보다 분산된 환경과 확장성을 필요로 하는 모던 애플리케이션에 적합한 방법입니다.
JWT (JSON Web Token):
Access Token:
Refresh Token:
- 정의: Refresh Token은 Access Token이 만료된 경우에 새로운 Access Token을 얻기 위해 사용되는 토큰입니다.
- 역할: 보안을 강화하기 위해 Access Token의 수명을 짧게 유지하면서, Refresh Token을 사용하여 클라이언트는 새로운 Access Token을 얻을 수 있습니다.
- 수명: 일반적으로 Access Token보다 더 긴 수명을 가집니다. Refresh Token도 만료될 수 있으며, 만료 시 사용자는 다시 로그인해야 합니다.
- 안전성: Refresh Token은 주로 안전한 저장소에 저장되어야 하며, 서버 간 통신 시에는 안전한 채널을 통해 전송되어야 합니다.
일반적으로 사용자가 로그인하면 Access Token과 함께 Refresh Token도 발급되며, Access Token이 만료되면 Refresh Token을 사용하여 새로운 Access Token을 얻게 됩니다. 이를 통해 클라이언트는 지속적으로 리소스에 접근할 수 있고, 보안을 유지할 수 있습니다.