세션/쿠키 방식

  • 서버의 세션과 사용자 쿠키를 기반으로 하는 인증 방식입니다.
  • 서버에서 클라이언트의 세션 정보를 별도의 세션저장소에 저장하고 있습니다.(DB를 세션저장소로 많이 이용합니다.)
  • 서버가 클라이언트의 상태(로그인)를 서버에서 계속 유지(저장)하고 이 정보를 서비스에 이용하는 Stateful 서버입니다.

동작 방식 (순서)

쿠키/ 세션 기반 인증 동작 순서

  1. 사용자가 로그인을 시도함.
  2. 회원이 맞는지 회원 DB에서 확인합니다.(인증)
  3. 사용자의 고유한 ID 값을 부여하여 세션 저장소에 저장함.
  4. 그 다음 이와 연결되는 세션 ID 를 발행
  5. 생성한 세션 ID를 로그인 요청에 대한 HTTP 응답 헤더에 담아 클라이언트로 전송
  6. 클라이언트는 서버에서 세션 ID 를 받아 쿠키에 저장
  7. 인증이 필요한 요청마다 쿠키를 HTTP 요청 헤더에 담아서 서버에 전송
  8. 서버는 받은 쿠키(세션 ID)를 검증
  9. 서버는 검증이 완료되면, 사용자에 맞는 데이터(유저 정보)를 내려다 줌.

장점

  • 각 사용자는 고유의 ID 값을 발급받게 되며, 서버는 쿠키 값을 받았을 때 일일이 회원 정보를 확인할 필요 없이 바로 어떤 회원인지를 알 수 있음. 덕분에 서버의 자원에 접근하기 용이함.
  • 이 방식은 기본적으로 쿠키를 매개로 인증을 거침. 쿠키는 세션 저장소에 담긴 유저 정보를 얻기 위한 열쇠일 뿐, 쿠키 자체 (세션 ID) 는 유의미한 값을 갖고 있지 않아 안전합니다.
  • ⇒ 따라서 요청이 도중에 노출되더라도 중요 정보는 서버 세션에 있기 때문에 위 방식보다는 비교적 안전함.

단점

  • 서버의 세션 저장소를 사용하기 때문에 서버 과부하가 생길 수 있음.
  • 세션 하이제킹 공격에 취얍합니다.
    ⇒ 쿠키를 가로챈 해커가 훔친 쿠키를 이용해 HTTP 요청을 보내면 서버의 세션 저장소에서는 사용자로 오인해 정보를 잘못 뿌려주게 됨.
    그래서 완전히 안전한 방법은 아님. → 이를 보완하기 위해 HTTPS 를 사용하거나 세션에 유효 기간을 넣어주는 방법이 있음.
  • 서버의 확장이 어려워집니다.
    ⇒ 서버의 확장이란, 더 많은 트래픽을 감당하기 위하여 프로세스를 돌리거나 여러대의 서버 컴퓨터를 추가하는 것을 의미합니다.

참조:

https://velog.io/@denmark-choco/Web-Authentication%EC%9D%B8%EC%A6%9D

https://doing7.tistory.com/87

https://brownbears.tistory.com/439

반응형

'web' 카테고리의 다른 글

쿠키, 세션  (0) 2021.12.19
web, api, rest  (0) 2021.12.07

+ Recent posts