[Spring] 쿠키/세션/토큰(용어)

지인·2023년 6월 22일
0

Spring

목록 보기
1/20
post-thumbnail

🐰 인증과 인가

인증(Authentication)

해당 유저가 실제 유저인지 인증하는 개념
ex) 회원가입, 로그인

🐾 유저인지 인증하는 것은 해당 유저가 진짜 그 유저인지 확인, 인증하는 행위!!


  1. 로그인 요청 : 클라이언트가 아이디와 비밀번호를 입력하고 로그인을 요청한다.

  2. 사용자 확인 : DB에 저장된 사용자의 비밀번호와 사용자가 입력한 비밀번호를 비교해보고, 인증 여부를 결정

  3. 토큰 발급 : 비밀번호가 일치한다면, 사용자의 정보가 담긴 일종의 출입증인 "토큰"을 사용자에게 전송

  4. 상태 유지 : 사용자는 토큰을 받았으니, 이제 다음 요청부터는 ID, PW가 아닌 이 토큰을 제시


인가(Authorization)

해당 유저가 특정 리소스에 접근이 가능한지 허가를 확인하는 개념
ex) 관리자 페이지- 관리자 권한

🐾 유저에게 특정 리소스에 대한 접근을 인가 한다!!!


  • 인가를 위해서는 인증이 선행되어야 한다!!
  1. 데이터 요청 : 사용자는 관리자에게만 허용된 페이지로 넘어가려 한다. 서버에 페이지 요청과 함께 아까 발급받은 토큰도 내민다.

  2. 토큰 검증 : 서버는 토큰을 보고 어떤 사용자가 요청했는지를 식별한 후, DB에서 사용자가 이 페이지에 접근할 권한이 있는지 확인한다.

  3. 인가 처리 : 사용자의 권한이 확인되면, 요청을 처리해준다.

🐰 HTTP 통신

HTTP(HyperText Transfer Protocol)는 인터넷 상에서 데이터를 주고 받을 때 서버 <-> 클라이언트 모델을 사용하자 라는 일종의 약속
url 앞에 가장 첫번째 자리에 http나 https가 있는데 나 이런 프로토콜로 통신할거야라고 말해주는 자리

🐾 https는 s(secure)이 추가된 버전으로, 보안이 더 강화된 버전이다.

  • 특징
    1. 비 연결성 - Connectionless : 사용자가 서버에 요청을 했을 때, 서버는 요청에 맞는 응답을 보내준 다음, 바로 연결을 끊어버린다.
      • ex) 한번 로그인을 해도 다른 페이지로 가면 로그아웃된다.
    2. 무상태 프로토콜 - Stateless : 서버는 클라이언트의 상태 정보를 저장하지 않기 때문에, 똑같은 사용자와 다시 한번 통신을 한다 해도, 이전에 통신한 적 있는지, 어떤 데이터를 주고 받았는 지 등을 전혀 알지 못한다.
      • ex) 상품을 선택했는데 장바구니에 선택한 상품이 없다.

🐰 쿠키/ 세션/ 토큰

쿠키(Cookie)

사용자가 어떤 웹사이트를 방문할 때, 사용자(클라이언트)의 PC에 저장하는 조그만 정보 파일

  • ex) 자주 방문한 사이트에 ID와 PW가 자동입력 되어 있거나, 팝업창에서 "오늘은 다시 보지 않기"를 클릭하는 것

  • 장점

    • 사용자 PC에 저장되므로 속도가 빠르고 서버의 자원을 낭비하지 않아 효율적
  • 단점
    - 사용자의 PC에 저장되므로 해킹의 위험이 있고, 브라우저가 종료되어도 자동으로 삭제되지 않아 보안 측면에서 세션보다 떨어진다.
    이러한 이유로 민감한 정보를 저장하지 않는다. (브라우저의 캐시를 삭제하는 이유)


세션(Session)

일정 기간 사용자의 상태를 일정하게 유지시키는 기술
(일정 기간 은 로그인 ~ 로그아웃, 로그인 ~ 브라우저 종료 시점을 의미)

  • 브라우저 하나당 하나의 세션이 생성되고, 해당 브라우저에서 들어오는 요청들은 모두 동일한 세션 ID로 식별해서 처리

  • 로그인 후 다른 화면으로 이동해도 로그인이 풀리지 않고 로그인 상태가 유지되는 것이 바로 세션덕분

  • 장점

    • 서버에서 관리하기 때문에 상대적으로 안전한 상태를 유지할 수 있고, 브라우저를 닫으면 자동으로 삭제되기 때문에 쿠키보다 보안이 좋다.
  • 단점

    • 서버에 저장되기 때문에 많은 사람들이 사용하면 과부하가 올 수 있고, 서버와 통신하므로 속도가 느리다는 단점

토큰(Token)

사용자의 인증 정보를 암호화한 것
일종의 출입증 역할

  • 사용자가 최초 로그인 시 토큰을 발급해주고, 이후 사용자는 이 토큰을 가지고 다른 웹사이트들도 "출입"할 수 있게 된다.

쿠키와 세션 비교

쿠키 (Cookie)세션 (Session)
설명클라이언트에 저장될 목적으로 생성한 작은 정보를 담은 파일서버에서 일정시간 동안 클라이언트 상태를 유지하기 위해 사용
저장 위치클라이언트 (웹 브라우져)웹 서버
사용 예사이트 팝업의 "오늘 다시보지 않기" 정보 저장로그인 정보 저장
만료 시점쿠키 저장 시 만료일시 설정 가능 (브라우져 종료시도 유지 가능)다음 조건 중 하나가 만족될 경우 만료됨
1. 브라우져 종료 시까지
2. 클라이언트 로그아웃 시까지
3. 서버에 설정한 유지기간까지 해당 클라이언트의 재요청이 없는 경우
용량 제한브라우져 별로 다름 (크롬 기준)
- 하나의 도메인 당 180개
- 하나의 쿠키 당 4KB(=4096byte)
개수 제한 없음 (단, 세션 저장소 크기 이상 저장 불가능)
보안취약 (클라이언트에서 쿠키 정보를 쉽게 변경, 삭제 및 가로채기 당할 수 있음)비교적 안전 (서버에 저장되기 때문에 상대적으로 안전)

 

출처
IT 샐러드 (IT Salad) - 가볍게 즐기는 IT 한 끼

profile
열쩡

0개의 댓글