세션, 쿠키, JWT

Park Taejoon·2022년 2월 10일
0

지식창고

목록 보기
4/4

세션과 쿠키를 사용하는 이유는 바로 HTTP의 단점 때문이다.
HTTP는 connectionless, stateless한 특성을 가지기 때문에 서버는 클라이언트가 누구인지 매번 확인해야 한다. 이런 단점을 보완하기 위해 사용한다.

connectionless?
클라이언트에서 요청을 한 후 응답을 받고 연결을 끊어 버리는 특징.

stateless
통신이 끝나면 상태를 유지하지 않는 특징

쿠키와 세션을 이용해서 로그인 정보를 저장하여 페이지를 이동해도 그대로 계정 정보를 가지고 있게 할 수 있다.

그럼 먼저 COOKIE가 무엇일까?

쿠키는 브라우저. 즉, 로컬에 저장되는 작은 데이터 파일이다. 키와 값으로 구성되있다.
쿠키는 자동으로 브라우저가 서버에 요청할 때 header에 포함하여 전송되는 특징을 가지고 있다.
쿠키는 유효기간을 정해서 브라우저가 종료되도 기한이 끝나지 않았다면 소유하고 있다.
로그인 같이 중요한 곳에 사용하지 않고 오늘 다시보지않기. 아이디 기억하기 정도에 사용한다.

다음으로 SESSION은 무엇일까?

정보를 브라우저에 저장하는 쿠키와 달리 세션은 서버에 저장한다!
즉, 이런 순서대로 된다.
클라이언트가 서버에 접속하면 세션 ID를 발급받는다.
클라이언트는 쿠키를 사용해서 세션 ID를 갖고 있고 서버에 요청할 때 이 세션 ID를 통해서 인증을 요청한다.
서버는 세션ID를 기억하고 있기 때문에 유효하다고 판단한다.
세션은 고유 ID를 각 사용자에게 부여해서 보안면에서 우수하나 각 사용자에게 모두 고유한 id를 부여하게 됨으로서 메모리를 많이 차지한다. 그래서 로그인 같이 중요한 곳에 사용한다.
세션은 브라우저를 종료하면서 같이 사라진다.

그러면 요즘 JWT를 인증에 많이 쓴다는데 왜?

SESSION 방식이 서버에 고유 세션ID를 갖고 인증을 하면서 보안에 좋다고 설명했다. 근데, 단점으로 서버에 모든 클라이언트 세션ID를 저장해야 된다고 했다.
그래서, JWT라는 방식을 사용한다. JWT는 암호화된 인증서를 서버로 보내고 서버는 해석해서 인증된 사용자임을 감지한다. 그리고 매번 서버는 이 인증서를 보고 인증된 클라이언트인지 판단한다. JWT도 역시 쿠키, 세션과 똑같이 HTTP헤더에 실어서 서버로 요청하고 서버는 식별한다.

0개의 댓글