HTTP는 비연결성 및 무상태성 이라는 특징을 가지고 있습니다.
그중에서 HTTP의 무상태성을 보완하기 위해 생긴 유저 인증방식입니다.
쿠키
쿠키는 서버가 사용자 브라우저 위치에 어떤 정보를 저장하고 불러오는 수단입니다.
하지만 데이터를 저장한 이후 아무 때나 데이터를 가져올 수 없습니다.
데이터를 저장한 이후 특정 조건들이 만족하는 경우에만 다시 가져올 수 있습니다.
이런 조건들은 쿠키 옵션으로 표현할 수 있습니다.
이러한 쿠키의 특성을 이용하여 서버는 클라이언트에 인증정보를 담은 쿠키를 전송하고,
클라이언트는 전달받은 쿠키를 요청과 같이 전송하여 Stateless 한 인터넷 연결을 Stateful 하게 유지할 수 있습니다.
하지만 기본적으로는 쿠키는 오랜 시간 동안 유지될 수 있고, 자바스크립트를 이용해서 쿠키에 접근할 수 있기 때문에 (XSS공격에 취약)
쿠키에 민감한 정보를 담는 것은 위험합니다.
단점
- 보안에 취약
- 기본적으로는 쿠키는 오랜 시간 동안 유지될 수 있고, 자바스크립트를 이용해서 쿠키에 접근할 수 있기 때문에 (XSS공격에 취약)쿠키에 민감한 정보를 담는 것은 위험합니다.
세션
세션의 경우 기본적으로 사용자가 인증에 성공한 상태는 세션이라고 부릅니다.
세션이 만들어지면 각 세션을 구분할 수 있는 세션 아이디도 만들어지는데
보통 클라이언트에 세션 성공을 증명할 수 있는 수단으로 세션 아이디를 전달합니다.
이때, 웹사이트에서 로그인을 유지하기 위한 수단으로 쿠키를 사용합니다.
보통 쿠키에 서버에서 발급한 세션 아이디를 암호화해서 저장합니다.
기본적으로 쿠키를 사용하지만 서버에서 유저 인증정보가 있다는 점에서 기존 쿠키 인증방식과 차이가 있습니다.
세션의 경우 보통 하나의 서버에서만 접속 상태를 저장합니다. 여러 개의 서버에서 같은 세션 데이터에 접근하려고 한다면
session clustering 혹은 공통 session store를 사용해야 하는 번거로움이 있습니다.
단점
- 세션의 경우 보통 하나의 서버에서만 접속 상태를 저장합니다
- 여러 개의 서버에서 같은 세션 데이터에 접근하려고 한다면 session clustering 혹은 공통 session store를 사용해야 하는 번거로움이 있습니다.
토큰
토큰 인증방식은 인증받은 사용자들에게 토큰을 발급하고,
서버에 요청을 할 때 헤더에 토큰을 함께 보내도록 하여 유효성 검사를 합니다.
이러한 시스템에서는 더이상 사용자의 인증 정보를 서버나 세션에 유지하지 않고
클라이언트 측에서 들어오는 요청만으로 작업을 처리합니다.
즉, 서버 기반의 인증 시스템과 달리 상태를 유지하지 않으므로 Stateless한 구조를 갖습니다.
JWT가 대표적으로 쓰이는 토큰 기반 인증방식입니다.
'언어(JS,TS) > 그룹스터디' 카테고리의 다른 글
그룹스터디 [보안 : SOP과 same origin] (0) | 2022.05.05 |
---|---|
그룹스터디 [보안 : CORS란?] (0) | 2022.05.05 |
그룹스터디 [Browser : CSR(Client Side Rendering) vs SSR(Server Side Rendering)] (0) | 2022.05.04 |
그룹스터디 [CS : 가비지 컬렉션?, 가비지 컬렉션 기능을 가진 언어] (0) | 2022.05.04 |
그룹스터디 [CS : 캐시(cache)란? 캐시의 일반적인 작동원리] (0) | 2022.05.04 |