인증과 인가
- 인증(Authentication)
- 해당 유저가 실제 유저인지 인증하는 개념
- 예시: 지문인식, 로그인 등
- 인가(Authorization)
- 해당 유저가 특정 리소스에 접근이 가능한지 허가를 확인하는 개념
- 예시: 관리자 페이지-관리자 권한 등
웹 애플리케이션 인증의 특수성
- 일반적으로 서버-클라이언트 구조로 되어있다.
- Http 프로토콜을 이용하여 통신한다. 👉🏻 비연결성(Connectionless) 무상태(Stateless)의 특징을 지닌다.
비연결성(Connectionless)
서버와 클라이언트가 연결되어 있지 않다는 것
- 채팅이나 게임을 제외하고 서버와 클라이언트는 실제로 연결되어 있지 않다.
- 서버와 클라이언트가 계속 연결되어 있다면, 서버의 비용이 기하급수적으로 늘어난다.
- 리소스의 절약을 위해 서버는 하나의 요청에 하나의 응답을 보내고 연결을 끊는다.
무상태(Stateless)
서버가 클라이언트의 상태를 저장하지 않는다는 것
- 기존의 상태를 저장하는 것들도 마찬가지로 서버의 비용과 부담을 증가시킨다.
- 실제로 서버는 클라이언트가 직전에, 혹은 그 전에 어떠한 요청을 보냈는지 관심도 없고 전혀 알지 못한다.
따라서 사용자 인증을 하고 난 이후에 다른 요청들을 보내더라도 서버는 해당 요청이 인증된 사용자로부터 온 것인지 알 길이 없다. 이러한 HTTP 프로토콜의 특성을 보완하기위해 클라이언트는 매 요청마다 자신이 로그인을 수행했고 자원을 사용할 권리가 있는 사용자임을 서버측에 확인시켜줘야한다. 그래서 요청마다 사용자에 대한 인증이 추가적으로 필요하다.
Reference
🔗 https://www.okta.com/kr/identity-101/authentication-vs-authorization/
🔗 https://velog.io/@hellonayeon/web-authentication