인증은 문자 의미 그대로 해당 사용자가 맞는지 또는 해당 시스템이 맞는지를 결정하는 과정으로, 인증 기술은 사용자의 자격 증명 정보가 데이터 인증 서버상의 자격 증명 정보와 일치하는지를 확인하여 인증 절차를 통과한 시스템에 대해서만 액세스 제어를 제공한다.
인가는 인증 과정을 통해 자격이 증명된 사용자에게 특정 리소스나 기능에 대한 액세스 권한을 부여하는 프로세스로, 서버의 특정 파일을 다운로드 할 수 있는 권한을 부여하거나 또는 애플리케이션에 대한 관리 액세스 권한을 제공하는 것이 인가에 해당한다.
사용자가 브라우저를 통해 웹 서버에 접속한 시점으로부터 브자우저를 종료하여 연결을 끝내는 시점 동안에 들어오는 요청들을 하나의 상태로 보고, 그 상태를 일정하게 유지시켜 사용자와 웹서버가 연결된 상태를 뜻한다.
사용자의 컴퓨터에 저장되는 데이터 파일로 이름, 값, 만료 날짜 및 시간, 경로 정보 등으로 구성되어 있다.
서버에서는 HTTP Response Header에 Set-Cookie 속성을 통해 사용자에게 쿠키를 전달하여 사용자가 이를 저장하게 하고, 사용자는 HTTP 요청 시 저장 된 쿠키를 함께 전달하여 서버에서 이를 통해 이전 통신에 사용된 정보들을 파악할 수 있다.
- 사용자가 로그인을 하기 위해 인증 정보를 가지고 인증 과정을 요청한다.
- 인증이 완료 되면 사용자의 세션 정보를 서버의 메모리에 저장 후 해당 세션을 식별할 수 있는 Session ID 발급한다.
- 발급한 세션 ID가 쿠키에 저장 될 수 있도록 HTTP Response Header의 Set-Cookie 속성을 이용하여 사용자에게 전달한다.
-전달받은 세션 ID는 브라우저의 쿠키에 저장 되고, Request를 서버에 보낼 때 함께 전달된다.- 서버는 사용자가 보낸 세션 ID 와 서버 메모리에서 관리하고 있는 세션 ID를 비교하여 Verification을 수행 후 권한을 인가한다.
◼︎ 장점
◼︎ 단점
지금은 잘 사용하지 않는 말이지만 예전엔 지하철이나 버스를 탈 때 토큰이라는 종이표를 가지고 탑승하였다. (아직 일부 지역에서는 토큰을 사용하는 것으로 알고 있다.) 웹에서도 토큰을 가지고 있으면 특정 서비스를 이용할 권리가 있다고 생각할 수 있다. 즉, 토큰은 제한된 리소스에 대해 일정 기간 동안 접근할 수 있는 권한을 캡슐화 한것으로, 사용자에게 의미를 알 수 없는 임의의 문자열 형태로 발급한다
- 사용자가 로그인을 하기 위해 인증 정보를 가지고 인증 과정을 요청한다.
- 인증이 완료 되면 서버의 메모리 상에 세션을 저장하는 대신에 사용자의 식별 정보를 가지고 있는 토큰을 발급해서 Response의 Body에 담아 사용자에게 전달한다.
- 사용자는 발급된 토큰을 local storage에 저장하고, Request를 할 때마다 저장된 토큰을 Header 에 포함시켜 서버로 보낸다.
- 서버는 사용자로부터 전달받은 Header의 토큰 정보를 Verification 한 뒤, 해당 유저에 권한을 인가한다.
◼︎ 장점
◼︎ 단점