세션 기반 인증
세션 기반 인증은 서버가 사용자 로그인 정보를 저장하고, 클라이언트는 서버가 발급한 세션 ID를 통해 인증을 받는 방식입니다.
사용자가 로그인하면 서버는 세션을 생성하고 세션 ID를 클라이언트에게 전달합니다. 이후 클라이언트는 이 세션 ID를 쿠키에 저장하고, 서버에 요청을 보낼 때마다 이 쿠키를 포함하여 인증을 수행합니다.
장점
- 서버측 관리 : 모든 세션 정보가 서버에 저장되므로 보안적인 측면에서 더 안전하게 관리할 수 있다.
- 상태 유지 : 세션 정보를 서버에서 관리하기 때문에, 사용자의 상태를 쉽게 유지할 수 있다.
단점
- 서버 부하 : 서버에 세션 정보를 저장해야 하므로, 사용자가 많아질수록 서버의 부하가 증가
- 확장성 문제 : 여러 서버에 걸쳐 세션을 공유해야 할 경우, 세션 동기화 문제로 인해 복잡성이 증가할 수 있습니다.
사용 예시
세션 기반 인증은 주로 웹 앱에서 사용자 로그인이 필요한 경우에 많이 사용됩니다. 예를 들어, 이커머스에서 사용자가 로그인을 하고 장바구니에 상품을 담으면, 세션을 통해 사용자의 상태를 관리할 수 있습니다.
토큰 기반 인증
토큰 기반 인증은 서버가 사용자의 인증 정보를 담은 토큰을 생성하여 클라이언트에게 전달하는 방식입니다. 클라이언트는 이 토큰을 요청 시마다 헤더에 포함시켜 서버에 인증을 요청합니다. 일반적으로 JWT (JSON Web Token) 형식의 토큰이 많이 사용됩니다.
장점
- 무상태성 : 서버가 사용자 정보를 저장할 필요가 없으므로, 서버의 부하가 줄어듭니다. 각 요청이 독립적이기 때문에 확장성이 뛰어남
- 다양한 환경 지원 : 모바일 앱이나 SPA등 다양한 클라이언트 환경에서 쉽게 사용할 수 있다.
단점
- 보안 문제 : 토큰이 클라이언트 측에 저장되기 때문에, 토큰이 탈취될 경우 보안 문제가 발생할 수 있다.
- 만료 관리 : 토큰이 만료되면 사용자는 다시 인증을 받아야 하므로, 관리가 필요
사용 예시
API 기반 서비스나 모바일앱에서 많이 사용됩니다. 예를 들어, 소셜 미디어 플랫폼의 API를 통해 데이터를 조회하는 경우, 클라이언트는 토큰을 사용하여 인증을 수행하고, 서버는 상태를 유지하지 않으면서도 안전하게 요청을 처리할 수 있다고 합니다.
결론
세션 기반 인증은 사용자 상태를 관리해야하는 웹 앱에 적합하고, 토큰 기반 인증은 확장성과 다양한 클라이언트 환경을 지원해야 하는 경우에 유리합니다.
'기타' 카테고리의 다른 글
Fitmate개인 개발 리포트 (0) | 2025.02.24 |
---|