세션 기반 인증 & 토큰 기반 인증

2023. 8. 21. 17:37브라우저&네트워크

세션 기반 인증

 

사용자가 로그인 하면 서버는 사용자의 정보를 바탕으로 세션을 생성하고, 이 세션에 대한 고유한 식별자인 세션 ID 를 클라이언트에게 반환한다.

클라이언트는 이 세션 ID 를 쿠키에 저장하고, 이후 요청마다 이 쿠키를 포함하여 서버에 전송한다. 서버는 세션 ID 를 사용하여 해당 사용자의 세션을 조회하고 인증 상태를 판별한다.

 

서버 측에서 사용자의 세션 정보를 유지 관리해야 하므로 상태를 유지한다. (stateful)

 

 

세션 정보를 서버 메모리에 저장하면 여러 서버 간의 세션 정보 공유가 어려울 수 있어 확장성에 제약이 생길 수 있다.

 

CSRF 와 같은 공격에 취약할 수 있다.

 


토큰 기반 인증

 

사용자가 로그인하면 서버는 사용자의 정보를 바탕으로 토큰을 생성하고 반환한다.

클라이언트는 이 토큰을 저장하고 이후 요청마다 헤더나 쿠키에 포함하여 서버에 전송한다.

서버는 토큰을 검증하여 사용자의 인증 상태를 판별한다.

 

서버는 사용자의 상태를 저장하지 않는다. 토큰 자체에 사용자 정보와 인증 정보가 포함되어 있으므로 서버는 상태를 유지하지 않아도 된다.(stateless)

 

서버 상태가 없기 때문에 여러 서버 간의 정보 공유에 대한 문제가 없어 확장성이 좋다.

 

토큰은 탈취되면 안전하게 만료시키거나 폐기하기 어렵다. 또한 JWT 의 경우 토큰의 내용이 Base64 로 인코딩 되어 있기 때문에 중요한 정보를 포함하면 안된다.

 


참고 링크

 

https://mangkyu.tistory.com/55

 

[Server] 토큰 기반 인증 VS 서버(세션) 기반 인증

기존의 시스템에서는 서버 기반의 인증방식을 사용하였다. 하지만 시스템의 규모가 커짐에 따라 서버 기반의 인증 방식은 한계점을 보이기 시작하였고, 토큰 기반의 인증 방식이 등장하게 되었

mangkyu.tistory.com

https://velog.io/@chickenrun/%EC%84%B8%EC%85%98-%EC%9D%B8%EC%A6%9D-%EB%B0%A9%EC%8B%9D-VS-Token-%EC%9D%B8%EC%A6%9D%EB%B0%A9%EC%8B%9D%EC%9D%B8%EC%A6%9D%EA%B3%BC-%EC%9D%B8%EA%B0%80

 

세션 인증 방식 VS Token 인증방식(인증과 인가)

HTTP는 본래 정보를 유지하지 않는 statless한 특성을 가져, 각 통신의 상태가 저장되지 않기 때문에 웹사이트에서 인증을 관리하기 위한 방법이 필요하다.유저가 어떤 사이트를 이용 중일 때 유저

velog.io

 

'브라우저&네트워크' 카테고리의 다른 글

OAuth  (0) 2023.08.21
JWT  (0) 2023.08.21
OSI 7 Layer  (0) 2023.08.21
HTTP 와 HTTPS 차이점  (0) 2023.08.10
TCP와 UDP  (0) 2023.08.09