[CS]서버 인증_HTTP

김피자·2023년 4월 6일
0

CS

목록 보기
20/22
post-thumbnail

SSO 인증 과정에 대해 알아보기 전, 지난 글에서 세션과 쿠키의 차이에 대해 알아보았는데! 이를 이용한 사용자 인증이 어떻게 이뤄지는지에 대해 먼저 알아보자


웹은 많은 사람들이 편리하게 접근하고 공유할 수 있는 공간이다.
하지만, 공유하고싶지 않은 데이터에 대해 허가된 사용자만 접근할 수 있도록 하는 공간도 필요하다.

로그인 없이도 공용으로 사용이 가능한 뉴스 보기, 검색 등 단순 서비스 말고! 메일이나 마이페이지 처럼 허가된 사용자만 접근 가능한!! 개인적인 서비스를 이용할 경우, 서버는 누구인지, 사용자가 허가된 사용자가 맞는지 등을 식별할 수 있어야한다.

인증은 사용자가 누구인지 증명하는 것이다.

지난 글에서 쿠키와 세션에 대해 알아보았다.
결국 이 둘의 공통점은 사용자의 로그인 정보를 가지고있다는 점이다.


HTTP 특징

HTTP는 클라이언트-서버 간 이뤄지는 요청/응답 프로토콜 이다.

클라이언트인 웹 브라우저가 HTTP를 통해 서버에 정보를 요청하면, 서버는 응답을 통해 필요한 데이터를 전달한다.

비연결성(Connectionless)

한번의 요청/응답의 결과로 클라이언트가 서버의 응답을 받은 후, 서로 접속을 끊게 된다. 이는 서버의 자원 낭비를 줄일 수 있다.

비상태성(Stateless)

HTTP가 요청을 처리한 후 연결을 끊어버리기 때문에 클라이언트의 상태 정보는 남아있는다. 다음 요청이 들어오면 이전 요청에 대한 정보를 가지고 있지 않아 매번 갱신을 해야한다.

로그인이라면 로그인이 유지되지 않고 창을 넘길 때마다 매번 로그인을 해야하는 것이다.


HTTP의 비연결성, 비상태성을 보완하여 서버가 클라이언트를 식별하게 하기위해 쿠키와 세션을 사용한다.


쿠키(Cookie)

지난 글에서 쿠키에 대해 정리했지만 한번 더 알아보면, 쿠키는 사용자가 웹 사이트를 방문할 때, 사용자의 컴퓨터에 설치되는 작은 기록 정보 파일을 말한다. 웹 사이트에 방문할 때마다 쿠키 부스러기처럼 사용자 컴퓨터에 임시 파일들이 생기는게 비슷하여 이름 지어졌다고 한다.

한가지 주의할 점은 브라우저마다 저장되는 쿠키는 다르다는 것이다.
서버는 브라우저가 다르면 다른 사용자로 인식한다.

예를들어 사파리로 남긴 쿠키는 크롬에서 사용할 수 없다.

쿠키가 있기 때문에 여러 페이지를 이동할 때마다 로그인을 하지 않고 사용자 정보를 유지할 수 있다.


세션(Session)

세션은 클라이언트의 사용자 인증 정보를 사용자 컴퓨터가 아닌 서버에 저장하고 관리한다.

일정 시간동안 같은 브라우저(사용자)로부터 들어오는 요ㅓㅇ을 하나의 상태로 보고, 그 상태를 일정하게 유지시키는 기술이다.

방문자가 웹 서버에 접속해있는 상태를 하나의 단위로 보고 이를 세션이라한다.

지난 글에서도 강조했지만 세션은 서버에서 가지고 있는 정보고 쿠키는 사용자에게 발급한 세션을 열기위한 Session ID를 의미한다.

쿠키만으로 인증을 사용하게되면?!

쿠키만으로 인증을 하면 서버의 자원은 사용하지 않는다는 것을 의미한다.
즉 클라이언트가 인증 정보를 책임지는 것이다.
(인증의 책임을 서버에게 주기 위해 세션을 사용하는 거임)


세션 기반 인증

서버 기반 인증방식은 서버가 사용자의 정보를 기억하고 있는 것을 말한다.
사용자가 로그인을 하면, 세션에 사용자 정보를 저장해두고 서비스를 제공할 때 사용하는데 아래와 같은 흐름을 가진다.

클라이언트(사용자)가 로그인을 요청하면 서버는 사용자를 확인한 후 사용자의 고유한 ID값을 부여하여 세션 저장소에 저장하고 이와 연결되는 Session ID를 발행한다.

클라이언트는 서버로부터 해당 Session ID를 받아 쿠키에 저장한 후, 인증이 필요한 요청마다 쿠키를 헤더에 실어 보낸다.

서버에서는 쿠키를 받아 세션 저장소에서 대조한 후 인증이 완료되면 사용자에 맞는 데이터를 보낸다.


출처
https://blog.bespinglobal.com/post/server-%ec%84%9c%eb%b2%84-%ec%9d%b8%ec%a6%9d-%ec%9d%b4%ed%95%b4%ed%95%98%ea%b8%b0-1%eb%b6%80-http/
https://mangkyu.tistory.com/55
https://feel5ny.github.io/2019/11/23/HTTP_012_01/

profile
제로부터시작하는코딩생활

0개의 댓글