인증
어떠한 개체(사용자 혹은 장치)의 신원을 확인하는 과정으로, 이 개체는 어떤 인증 요소를 증거로 제시함으로서 본인을 인증한다.
예시를 든다면 비행기 티켓을 구매하려고 하는 사용자가 있을 때, 비행기를 탈 수 있는 자격이 되는지를 증명하기 위해서 사용자는 여권을 제시해야 할 수 있다. 즉 인증된 사용자인지를 확인하기 위한 과정인 것이다.
예시로 들자면, 온라인이라면 SNS나 쇼핑몰 등 홈페이지에 접속하는 방법으로 아이디/패스워드를 통한 인증이나, 등록된 휴대폰으로 전달되는 메시지 코드를 입력하는 행위나 인증 key 방식의 로그인 등이 모두 인증 과정의 한 예시라고 할 수 있고, 이 인증 요소에는 여러 개가 있을 수 있다.
인가
인가는 어떠한 개체가 어떤 리소스에 접근할 수 있는지, 어떤 동작을 수행할 수 있는지를 검증하는 것을 말한다.
즉 인증이 사용자의 자격을 증명하는 행위라면, 인가는 접근 권한을 얻는 일이라고 할 수 있는데, 예시를 들자면 콘서트 공연장에 입장하려고 티켓을 구매하는 상황일 때, 이 공연의 기획사는 사용자의 신원 정보를 알 필요 없다. 단순히 입장 권한이 있는지에 대한 여부를 확인할 뿐이다.
공연장 들어갈때 신분증이나 여권 등으로 접근 권한을 얻지 않는다. 콘서트 티켓이 그 입장 권한을 얻기 위한 것인데, 신원 정보가 없다고 해서 인가 과정에서 검증이 실패하지는 않는다.
인터넷 기반의 앱에서는 일반적으로 토큰이라고 부르는 가공물을 사용하여 인가를 다룬다. 유저가 로그인을 하면 앱은 유저가 무엇을 할 수 있는가에 관심을 가지게 된다. 그렇게 시스템은 사용자의 신원을 바탕으로 하는 인가의 세부사항을 가지는 토큰을 생성하고, 그 토큰을 이용해서 어떤 권한을 부여하고 어떤 리소스에 대한 접근 요청을 허용할 것인지 거부할 것인지를 결정한다.
두 개념의 차이점
- 인증은 유저나 디바이스의 신원을 증명하는 행위이다.
- 인가는 유저나 디바이스에게 접근권한을 부여하거나 거부하는 행위이다.
- 인증은 인가 의사결정의 한 요소가 될 수 있다.
- 인가 가공물(토큰)으로 유저나 디바이스의 신원을 파악하는 방법은 유용하지 않다.