인증과 인가 / 세션,쿠키

Dayeon myeong·2021년 2월 3일
0

백엔드공부

목록 보기
1/3

인증과 인가

  • 인증(Authentication) : 유저가 누구인지 확인하는 절차

  • 인가/권한(Authorization) : 유저가 특정 자원에 대한 접근 권한이 있는지 권한을 확인하는 것

HTTP 프로토콜

  • HTTP 프로토콜의 특징
    • 비연결지향(Connectionless) : 클라이언트의 request에 맞는 response를 보내고 접속 끊음
    • 상태 정보 유지 안함 (Stateless) : 통신이 끝나면 상태 정보 유지하지 않음
    • HTTP 프로토콜의 이 2가지 특징에 따라 새로운 페이지 요청할 때마다 새로운 접속이 이루어지며 이전 페이지와 현재 페이지 간의 관계가 지속되지 않는다. 이 약점을 보완하기 위해 3가지 인증방법(쿠키,세션,토큰)을 사용.

세션과 쿠키의 공통점

웹 페이지들 사이에서 공유하는 정보를 서버에 저장해두고, 웹페이지들을 매개한다.

세션과 쿠키의 차이점

_2021-01-27__9 25 50

쿠키

  • 단순한 키-값 쌍
  • 사용자 정보를 클라이언트 로컬에 파일로 저장됩니다.(클라이언트의 자원을 사용)
  • 브라우저를 종료해도 계속해서 정보가 남아있는 특징이 있습니다.그러므로 직접 삭제하거나 만료시간을 설정하여 쿠키를 삭제해야 합니다.
  • 쿠키는 클라이언트 로컬에 저장되어있기 때문에 다른 사용자에 의해서 임의로 변경이 가능하고, request에서 스나이핑 당할 수 있어 보안성이 낮습니다.
  • 로컬에 저장된 파일에 바로 접근하여 사용하기 때문에 속도가 빠릅니다.
  • 서버로부터 쿠키가 오면 웹 브라우저는 쿠키를 저장해두었다가 요청할 때마다 브라우저가 자동으로 쿠키 같이 보냄
  • 쿠키는 요청과 응답의 헤더에 저장됨

쿠키 동작 절차

  1. 클라이언트 -> 서버 첫 요청 시 서버는 응답할 때 쿠키에 저장하고자 하는 정보를 Header 의 Set Cookie 로 함께 전달합니다.
  2. 클라이언트에 저장된 쿠키는 이후 매 요청 때마다 현재 브라우저에 저장된 쿠키를 Header 의 쿠키로 전달합니다.
  3. 서버는 클라이언트의 요청(Request)에서 쿠키 값을 참고하여 비즈니스 로직을 수행합니다. (ex 로그인 상태 유지, ...)

세션

  • 세션은 서버 메모리에 저장됩니다.(서버의 자원을 사용) 그러므로 무분별하게 세션을 만들다 보면 서버의 메모리가 감당할 수 없어질 수가 있고 과부하로 인해 속도가 느려질 수 있습니다. 그래서 세션과 쿠키를 융합해서 사용해야 합니다.
  • 세션도 만료시간이 있지만, 기본적으로 웹 브라우저가 종료되면 세션이 만료되어 사라집니다. 일정 시간 동안 같은 브라우저로부터 들어오는 요청을 하나의 상태로 보고 그 상태를 웹 브라우저가 종료할 때까지 유지합니다. 또한, 서버를 재시작하면(메모리 리셋) 세션 데이터가 사라집니다.
  • 브라우저당 하나의 세션 ID가 생성됩니다 = 브라우저 당 하나씩 세션이 생성됨.
  • 서버의 세션에 사용자 정보를 저장하고,클라이언트와는 쿠키를 이용해서 세션 ID로만 통신하기 때문에 비교적 보안성이 좋습니다. (클라이언트는 발급받은 세션 ID를 쿠키를 사용해서 저장)

세션 동작 절차

  1. 클라이언트가 서버에 요청시 서버는 필요에 따라 접속한 브라우저에 대한 세션 객체를 생성하여 세션 ID를 발급받습니다.
  2. 서버는 생성한 세션 ID를 쿠키값으로 만들고 Set Cookie라는 쿠키 헤더를 통해서 클라이언트 브라우저로 보냅니다.(response)
  3. 브라우저는 이 쿠키값을 저장해 두었다가 서버에 무언가 요청할 때마다 쿠키에 저장한 세션id를 쿠키 헤더를 통해서 서버에 전달합니다.
  4. 서버는 전송받은 세션ID를 이용해 해당 세션에 접근하여 작업합니다.

세션의 중요한 특징은 브라우저 당 하나씩 생성된다는 것입니다.브라우저가 서버에 세션 ID를 전송하면 서버는 그 값을 이용해서 브라우저를 구분합니다.

그리고 브라우저 종료시 세션 아이디는 제거되고, 서버에서도 세션이 제거됩니다.

profile
부족함을 당당히 마주하는 용기

0개의 댓글