반응형
1. 서버(세션) 기반 인증
서버 측에서 사용자, 즉 클라이언트의 정보를 세션에 저장하여 기억하는 방식으로 메모리, 디스크, 데이터베이스 등을 통해 관리를 하게된다. 예를 들어 로그인을 하게 되면 세션에 사용자 정보를 저장하고 사용자 정보가 필요한 서비시를 제공할 때 사용하곤 하는 방식이다. 이러한 서버를 Stateful 서버라 한다.
서버(세션) 기반 인증은 세션(session)과 쿠키(Cookie)가 사용되는데 아래와 같이 인증 절차가 진행된다.
서버(세션) 기반 인증 장점
- 서버에서 세션정보가 관리되므로 상대적으로 안전
- 서버에 세션정보가 있기 때문에 로그인 상태 여부를 확인하기 수월
서버(세션) 기반 인증 단점
- 서버 확장성의 어려움
- 메모리/데이터베이스의 과부화로 성능에 영향
- CORS(Cross-Origin Resource Sharing) : 여러 도메인에서 관리하는 것에 대해 번거로움
(쿠키는 단일 도메인 및 서브 도메인에서만 동작)\
2. 토큰 기반 인증
서버는 인증받은 사용자에게 토큰을 발급, 클라이언트에서는 이 토큰을 저장하여 서버로 서비스 요청 시 헤더에 토큰을 실어 보내 유효성 검사를 하는 인증방식이다. 서버에 클라이언트 정볼르 저장하지 않으므로 Stateless 서버라 한다.
토큰생성 및 인증절차는 아래와 같다.
토큰 기반 인증 장점
- 서버에 저장되지 않아 메모리/데이터베이스 성능에 영향이 적고 서버 확장에 대해 용이함.
- 토큰을 이용하여 로그인 정보가 다른 분야로 확장하여 이용할 수 있도록 하는데 용이함.
(Google, Facebook 등등의 로그인 계정으로 로그인 처리) - 여러 플랫폼 및 도메인에서 토큰일 용한 검증이 가능하므로 여러 디바이스, 도메인에서 인증이 가능하다.
토큰 기반 인증 단점
- 토큰에 대한 길이가 길어지므로 네트워크 대역폭에 대한 낭비가 존재한다.
- 토큰 발행 시 사용되는 Signature 정보만 맞으면 맞는 토큰으로 인식하기에 한번 발급된 토큰의 정보를 바꾸는 것이 불가하다.
- 단순 Base64로만 인코딩되기 때문에 토큰이 불법적으로 취득되면 사용자 정보가 노출된 가능성이 있다.
=> 그러나 이를 보완하는 방법으로 토큰 자체를 암호화하는 JWE 방식도 존재한다
반응형
'Backend > Server&Network&설계' 카테고리의 다른 글
Rate Limiter란? 그리고 방식과 특징 (0) | 2024.12.17 |
---|---|
HA Proxy란? (0) | 2022.08.09 |
프록시 서버란? (0) | 2022.08.07 |
Stateful vs Stateless (0) | 2022.02.20 |