인증과 인가

로그인이나 회원가입을 할 때, 필요한 인증서비스를 구축할 때 인증과 인가가 어떻게 다른지 알아보기로 했다.
- 인증(Authentication)이란 서비스를 이용하려는 유저가
등록된 회원
인지 확인하는 절차
- 인가(Authorization)이란
특정 리소스에 접근할 수 있는 권한
이 있는지 확인하는 절차
쿠키(cookie)란?
- 무상태와 비연결성이라는 http 통신의 특징에도 불구하고 마치 서버가 클라이언트의 인증 상태를 기억하는 것처럼 구현할 수 있는 수단으로 사용할 수 있다.
- 쿠키란
브라우저에 저장
되는 텍스트 파일이며, key-value 형태로 저장된다.
- 쿠키는 별도로 삭제처리하거나 유효기간이 만료되지 않는 이상 서버와 통신할 때 자동으로 주고 받게 된다.
- 서버에 특정 API 요청을 했을 때 서버가 응답 시 header 안에 set-cookie 속성으로 쿠키 정보를 담아주면 응답을 받은 브라우저는 쿠키를 브라우저에
자동으로
저장한다. (저장된 쿠키정보는 개발자도구 → 애플리케이션 → 저장용량 → 쿠키
에서 확인 가능)
- 서버에 http 요청 할 때 마다 브라우저에 저장되어 있는 쿠키는
자동으로
서버에 보내진다. (단, 동일한 Origin 또는 CORS를 허용하는 Origin에만 쿠키를 보낸다. ex- 유튜브 서버에서 받은 쿠키는 유튜브 이용 시에만 주고 받을 수 있다.)
- 클라이언트 쪽에서 수정/추가/삭제를 할 수 있다.
Origin 알아보기
출처(origin) 이란 protocol + host + port 를 의미한다. 즉 주소를 만들 때에 대한 규칙인 것이다.

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