2023-02-22(인증/인가)쿠키

박준혁·2023년 2월 23일
0

인증/인가(쿠키편)

인증 인가의 수단으로써 주로 사용되는 ==쿠키, 세션, 토큰==

✅ 상황 : 로그인 할 때

▶ 인증 : (입증, 증명) -> 서비스를 이용하려는 유저가 ==등록된 회원==인지 확인하는절차

▶ 인가 : (허가, 권한) -> ==특정 리소스에 접근할 수 있는 권한==이 있는지 확인하는 절차(ex. 카페이용권한, 마이페이지이용권한이 있는지 확인하는 절차)
유저가 마이페이지에서 서버에 API요청으로 개인정보를 받아오는 요청을 할 때, 서버는 클라이언트에게 인증을 줄까 인가를 줄까 => 인가

✅ http프로토콜 통신의 2가지 특징

  • 무상태
    서버는 클라이언트 상태를 기억하지 않음. 각 요청마다 요구정보를 서버에서 요구하는 모든 상태 정보를 담아서 요청. ==chatGPT를 생각하자==

  • 비연결성
    서버와 클라이언트는 연결되어 있지 않다. ->서버는 매번 새로운 요청을 받는다 ==chatGPT를 생각하자==

이 두가지 특성덕에
스케일확장(SCALE-OUT)이 편하다
비연결성으로 최소한의 서버자원으로 서버유지 가능
사용자 요청이 잦은 서비스는 비연결성이 비효율적일 수 있다

✅ 쿠키란?
  • 무상태&비연결성 특징에도 불구하고 서버가 클라리언트 인증 상태를 기억하는 것처럼 구현할 수 있는 수단으로 사용하는 게 ==쿠키==이다. 한 마디로 HTTP특성들을 개선할 수 있는 수단으로 씌인다.
    (=브라우저가 주머니에 항상 가지고 있는 과자)
  • KEY와 VALUE 형태로 저장됨
  • 쿠키를 별도 삭제하거나 유효기간 만료가 되지 않는 한 서버와 통신할 때 자동으로 주고받음
    (=과자가 상하지 않는 한, 버리지 않는 한 계속 주고받음)
  • 서버에 특정 API 요청을 했을 때(로그인(인증)을 눌렀을 때) 서버가 응답 시 header 안에 set-cookie속성으로 쿠키 정보를 담아주면 응답을 받은 쿠키를 브라우저에 자동으로 저장한다.(저장된 쿠키정보는 : 개발자도구 -> 애플리케이션 -> 저장용량 -> 쿠키)

개발자 도구의 network에서 쿠키 정보를 담아준다(서버가 준 것)

브라우저가 애플리케이션 안에서 쿠기의 값을 저장.

이런 방식으로 쿠키를 받고 그 값을 저장하고 또 다시 서버에 요청을 할 때마다 브라우저의 저장되어 있는 쿠키를 자동으로 보내진다.(단, 동일한 origin 이나 CORS를 허용하는 origin에만 쿠키를 보낸다.)
=>유튜브 서버에서 받은 쿠키는 유튜브 이용 시에만 주고 받을 수 있다.
▶ origin이란?

▶ CORS : cross origin Resource Sharing : 다른 출처에 리소스 요청하는 것을 허용하는 정책. 브라우저는 보안상의 이유로 기본적으로 SOP(same origin policy)를 원칙으로 하지만, 서버와 클라이언트 각각 CORS설정을 통해 상호합의된 웹사이트는 예외적으로 서로 다늘 출처(cross origin)임에도 API요청이 가능

  • 쿠키는 클라이언트에서 직접 추가, 삭제, 수정이 가능하기때문에 이런 처리가 안 되어있으면 보안이 취약하다
profile
"열정"

0개의 댓글