728x90

HTTP 프로토콜의 비상태성 특성의 단점을 해결하기 위해

기존에는 세션을 사용하여 상태를 유지하는 방법을 사용했다.

 

세션 기반 자격 증명

세션 기반 자격 증명 방식은 서버 측에 인증된 사용자의 정보를

세션 형태로 세션 저장소에 저장한 후에 클라이언트 측에서 요청을 하면

세션 저장소의 세션과 사용자가 제공하는 정보가 일치하는지 확인한다.

 

즉, 인증된 사용자의 정보를 서버 측에서 관리하고

클라이언트 쪽은 세션 ID만 사용하여 상대적으로 적은 네트워트 트래픽을 사용한다.

 

서버 측에서 세션 정보를 관리하여 보안성 측면에서도 유리하다고 볼 수 있지만

서버의 확장성 면에서 세션 불일치 문제가 발생할 수도 있고

세션의 데이터가 많아질수록 서버의 부담이 가중된다.

 

CSR 방식보다는 SSR 방식에 적합한 방식이다.

 

토큰 기반 자격 증명

토큰은 티켓이나 입장권을 떠올리면 이해하기 쉽다.

 

현실에서 어떤 무언가를 이용할 때 사용자는 돈을 지불하여

무언가를 이용할 권한(토큰)을 얻는다.

 

여기서 돈을 지불하는 것

사용자가 Credential로 로그인 정보를 주는 것에 해당하고

지불한 돈에 맞는 권한을 얻는 것을 토큰에 해당한다.

 

여기서 세션 기반 자격 증명과 다른 점은

인증 정보(세션)를 서버 측에서 갖고 있는 것이 아닌

사용자가 직접 토큰을 갖고 있는 것이다.

 

세션 기반 방식에서는 사용자는 세션 아이디만 가지고

서버 측에 요청을 했다면 토큰 방식은 이와 반대로

클라이언트가 토큰으로 모든 인증된 사용자 정보를 가지고 요청하기 때문에

세션 방식에 비해 많은 네트워크 트래픽을 사용한다.

 

서버 측에서 세션을 관리하지 않기 때문에 보안적으로는 불리하지만

세션처럼 인증된 사용자 요청 상태를 유지할 필요가 없어

서버의 확장에 유리하고 세션 불일치 같은 문제가 없다.

 

클라이언트 측에서 토큰에 암호화 되지 않은 상태의

사용자 정보를 가지고 있기 때문에 민감한 정보는 포함하지 않는 것이 좋다.

 

한 번 발급한 토큰은 만료되기 전까지 무효화가 불가능하다.

 

CSR 방식에 적합하다.

 

단순하게 세션 방식의 특징과 정반대라고 생각하면 편하다.

+ Recent posts