반응형
세션과 토큰 기반 인증
세션 기반 인증, 토큰 기반 인증
- 웹 애플리케이션 및 다른 서비스에서 사용되는 두 가지 주요 인증 방식이다.
- 두 방식은 사용자를 인증하고 인가하는 방법에 차이가 있다.
세션 기반 인증
- 세션 기반 인증은 서버 측에서 사용자의 상태를 유지하고 관리하는 방식이다.
- 사용자가 로그인하면 서버는 사용자를 식별하는 세션 ID를 생성하고, 이 세션 ID를 클라이언트에게 부여한다.
- 세션 ID는 typically 쿠키를 통해 클라이언트에 저장되며, 이후 사용자의 모든 요청은 서버로 전송되고, 서버는 클라이언트가 제공한 세션 ID를 확인하여 해당 세션에 대한 상태를 확인하고 사용자를 인증하며 권한을 부여한다.
- 세션은 일반적으로 서버 측에서 관리되므로, 클라이언트는 세션 정보에 직접 접근할 수 없다.
토큰 기반 인증
- 토큰 기반 인증은 클라이언트 측에서 사용자의 상태를 관리하는 방식이다.
- 사용자가 로그인하면 서버는 클라이언트에게 액세스 토큰(Access Token)을 발급한다.
- 이 토큰은 사용자를 인증하고 권한을 부여하는 데 사용되며, 클라이언트는 모든 요청에서 이 액세스 토큰을 포함하여 서버로 보낸다.
- 서버는 액세스 토큰을 검증하고, 해당 토큰이 유효하면 사용자를 인증하고 요청을 처리한다.
- 토큰은 일반적으로 JSON Web Tokens (JWT) 형식으로 사용되며, 클라이언트는 토큰을 디코딩하여 사용자 정보 및 권한을 확인할 수 있다.
주요 차이점
- 세션 기반 인증은 서버가 사용자 상태를 관리하고 클라이언트에 대한 상태를 저장한다.
- 토큰 기반 인증은 클라이언트 측에서 상태를 관리하고 서버는 간단히 토큰을 검증한다.
- 세션 기반 인증은 보통 쿠키를 사용하여 세션 ID를 저장하고 전송한다.
- 토큰 기반 인증은 HTTP 헤더나 URL 매개변수를 통해 토큰을 전달한다.
- 토큰 기반 인증은 서버와 클라이언트가 분리되어 있기 때문에 분산 시스템에서 더 용이하게 사용된다.
- 세션 기반 인증은 상태 관리를 위해 서버 측 저장 공간을 필요로 하지만, 토큰 기반 인증은 서버에서 상태를 저장할 필요가 없으므로 서버 부하가 덜하다.
요약
세션 기반 인증은 서버가 사용자 상태를 관리하고 세션 ID를 사용하며, 클라이언트는 세션 정보에 직접 접근할 수 없다. 토큰 기반 인증은 클라이언트가 사용자 상태를 관리하고 액세스 토큰을 사용하며, 서버는 토큰을 검증한다. 토큰 기반 인증은 분산 시스템에서 용이하며 서버 부하가 적지만, 선택은 애플리케이션 요구사항과 보안 고려사항에 따라 달라진다.
반응형
'[백엔드] 기술면접' 카테고리의 다른 글
[백엔드] 기술 면접 Top30 - #20 클래스형과 함수형의 차이 C++ (71) | 2023.09.30 |
---|---|
[백엔드] 기술 면접 Top30 - #18 JWT, Refresh, Access Token (57) | 2023.09.24 |
[백엔드] 기술 면접 Top30 - #16 OSI 7계층 (51) | 2023.09.22 |
[백엔드] 기술 면접 Top30 - #15 GET, POST 데이터 흐름 (43) | 2023.09.20 |
[백엔드] 기술 면접 Top30 - #14 ORM이란? (49) | 2023.09.19 |