Backend/Server&Network

서버(세션) 기반 인증 vs 토큰 기반 인증

야뤼송 2022. 2. 22. 16:46
반응형

1. 서버(세션) 기반 인증

 

서버 측에서 사용자, 즉 클라이언트의 정보를 세션에 저장하여 기억하는 방식으로 메모리, 디스크, 데이터베이스 등을 통해 관리를 하게된다. 예를 들어 로그인을 하게 되면 세션에 사용자 정보를 저장하고 사용자 정보가 필요한 서비시를 제공할 때 사용하곤 하는 방식이다. 이러한 서버를 Stateful 서버라 한다.

 

서버(세션) 기반 인증은 세션(session)과 쿠키(Cookie)가 사용되는데 아래와 같이 인증 절차가 진행된다.

 

서버(세션) 기반 인증 장점

  • 서버에서 세션정보가 관리되므로 상대적으로 안전
  •  서버에 세션정보가 있기 때문에 로그인 상태 여부를 확인하기 수월

 

 서버(세션) 기반 인증 단점

  • 서버 확장성의 어려움
  • 메모리/데이터베이스의 과부화로 성능에 영향
  • CORS(Cross-Origin Resource Sharing) : 여러 도메인에서 관리하는 것에 대해 번거로움
    (쿠키는 단일 도메인 및 서브 도메인에서만 동작)\

 

2. 토큰 기반 인증

 

서버는 인증받은 사용자에게 토큰을 발급, 클라이언트에서는 이 토큰을 저장하여 서버로 서비스 요청 시 헤더에 토큰을 실어 보내 유효성 검사를 하는 인증방식이다. 서버에 클라이언트 정볼르 저장하지 않으므로 Stateless 서버라 한다.

 

토큰생성 및 인증절차는 아래와 같다.

 

토큰 기반 인증 장점

  • 서버에 저장되지 않아 메모리/데이터베이스 성능에 영향이 적고 서버 확장에 대해 용이함.
  • 토큰을 이용하여 로그인 정보가 다른 분야로 확장하여 이용할 수 있도록 하는데 용이함.
    (Google, Facebook 등등의 로그인 계정으로 로그인 처리)
  • 여러 플랫폼 및 도메인에서 토큰일 용한 검증이 가능하므로 여러 디바이스, 도메인에서 인증이 가능하다.

토큰 기반 인증 단점

  • 토큰에 대한 길이가 길어지므로 네트워크 대역폭에 대한 낭비가 존재한다.
  • 토큰 발행 시 사용되는 Signature 정보만 맞으면 맞는 토큰으로 인식하기에 한번 발급된 토큰의 정보를 바꾸는 것이 불가하다.
  • 단순 Base64로만 인코딩되기 때문에 토큰이 불법적으로 취득되면 사용자 정보가 노출된 가능성이 있다.
    => 그러나 이를 보완하는 방법으로 토큰 자체를 암호화하는 JWE 방식도 존재한다
 
반응형