이미지 출처: www.google.com
일상 생활에 대한 예시로는 누군가가 회사를 방문했다고 가정해 보자.
그 누군가는 회사 직원일 수도 있고, 직원을 찾아온 방문객일 수도 있다.
만약 직원이라면 사원증을 통해서 들어 갈 수 있고
방문객이라면 별도 확인 절차를 통해 방문증을 발급 받아야 들어 갈 수 있다.
이때 직원이라면 회사 내 사무실이나 회의실등 사내 시설을 자유롭게 이용 할 수 있는 반면
방문객은 특정 장소에만 방문을 할 수 있는 제약이 있다.
이때 사원증을 제시하거나 방문증을 발급 받는 것을 인증으로,
방문객의 경우 제한된 장소에만 방문 할 수 있는것을 인가 라고 볼 수 있다.
이제 조금은 개발자적인 관점으로 보자면
Client-Server 구조의 서비스를 구현함에 있어서 Client 관점에서 인증은 로그인이나 회원 가입과 같은 서비스의 도입부에 해당하지만, Server 관점에서는 모든 요청에 대해서 사용자를 확인하는 작업이다. 두 관점에서 볼때 Client 측에서는 한번의 인증 과정이 필요한 반면 Server 측에서는 HTTP 프로토콜의 특징으로 인해 모든 요청에 대해 인증 과정이 필요 하게 된다. 이때 Client 관점의 인증을 Authentication, Server 관점의 인증을 Authorization 이라고 생각하면 된다.