ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 서버(세션) 기반 인증 방식의 장단점 및 동작 방식
    개발에 필요한 기초 지식 2022. 3. 23. 16:04

    지난 번에 JWT에 대해서 조사했을 때 서버(세션) 기반 인증 방식의 STATEFUL 한 단점으로 인해 토큰 기반 인증 방식이 등장했음을 알아봤었습니다. 그런데 스터디를 같이 하시는 재엽님께서 이런 질문을 하셨습니다.

    "서버 기반 인증 방식의 장점은 어떤게 있을까요?"

    블로그들을 봐도 토큰 기반 인증 방식의 장단점과 서버 기반 인증 방식의 단점에 대해서만 많이 적혀져 있고

    서버 기반 인증 방식의 장점에 대해서는 많지 않았던 것으로 봤었고

    어떤 단점으로 인해 다른 인증 방식이 등장한건지에 대해서만 찾아봤어서 답변을 못 했어서 이렇게 찾아봤습니다.

    이런 좋은 질문을 해주신 재엽님 그리고 같이 고민하고 찾아봐주신 스터디원분들께 감사드립니다.

     

     

    1. 서버 기반 인증 방식이란

    사용자 인증을 서버의 세션을 사용하여 서버 측(서버의 램이나 디스크, 데이터베이스)에서 사용자 정보를 관리하는 것

     

     

    2. 특징

    1. 서버가 사용자 정보 관리

    서버에서 사용자의 세션 정보를 서버의 메모리, 디스크, DB 등에 저장하고 관리

    2. Stateful

    서버가 클라이언트의 정보를 계속 저장하고 관리하기 때문에 같은 서버를 사용해야 한다.

     

     

    3. 동작 방식

    로그인 성공

    => Session ID를 기준으로 서버의 메모리, 디스크, DB 등에 저장

    => Session ID를 쿠키에 담아 클라이언트에게 전달

     

    클라이언트는 요청시마다 쿠키를 함께 요청

    => 서버는 Session ID를 Key 값으로 해서 조회해서 필요한 정보 응답

    서버 기반 인증 방식의 동작 방식

     

    4. 장점

    1. 클라이언트의 정보를 서버가 직접 관리하여 문제 발생시 빠른 대처 가능 (강제 로그아웃)

    서버가 클라이언트의 정보에 대해 저장하고 관리하기 때문에 사용자의 로그인 정보 확인이 용이하고 필요에 따라 강제 로그아웃 처리도 가능하다.

     

     

    5. 단점

    1. 확장성 제약

    Stateful 로 인해 스케일 아웃과 같은 확장성이 어렵다.

    2. 서버 부하

    세션을 메모리나 디스크, DB에 저장하는데 요청이 많아지면 부하가 발생할 수 있다.

    3. CORS (Cross Origin Resource Sharing)

    세션을 사용할 때 사용되는 쿠키는 단일 도메인 및 서브 도메인에서만 작동하도록 설계되어 있다.

    그래서 쿠키를 여러 도메인에서 관리하는 것은 어렵고 번거로울 수 있다.

     

    4. 세션 하이재킹으로 인한 보안 문제

    세션이 하이재킹 당하면 해당 쿠키로 클라이언트 인증에 성공하여 유저 정보가 노출될 수 있다.

    <해결책>

    1. HTTPS 사용

    2. 세션에 유효시간 설정

     

     

     

    <참고 자료>

    https://millo-l.github.io/Session-%EA%B8%B0%EB%B0%98-%EC%9D%B8%EC%A6%9D%EB%B0%A9%EC%8B%9D/

     

    https://velog.io/@djaxornwkd12/%EC%84%9C%EB%B2%84%EC%9D%B8%EC%A6%9D

    댓글

Designed by Tistory.