인증과 인가는 항상 함께 등장하는 개념임녀서 사용하기 헷갈리는 용어이기도 하다.
문맥상 어색하지 않은 경우가 있어 이 둘의 차이를 두지 않고 사용하는 경우도 빈번하다.
인증과 인가는 최신 컴퓨터 시스템에서 널리 사용되지만 사람들이 종종 혼동하는 용어이며 두 용어는 모두 보안과 관련이 있다.
- 인증이란 어떤 개체(사용자 또는 장치)의
신원
을 확인하는 과정이다. - 개체는 보통 어떤 인증요소를 증거로 제시하여 자신을 인증한다. 예를 들어 은행에 가서 돈을 인출하려고 하면 은행직원은 당신이 누구인지 신분증을 제시해 달라고 요청할 수 있다. 비행기 티켓을 구매하려고 하면 당신이 탈 수 있는 자격이 되는지 증명하기 위해 여권을 제시해야 할 수도 있다.
- 두 예 모두 신원을 확인하기 위해 인증 절차가 어떻게 진행되는지 보여준다.
- 온라인에서도 마찬가지로 페이스북 프로필이나 회사 메일 클라이언트 프로그램에 접속하려고 할 때 비슷한 일이 일어난다. 신분증이나 여권을 제시하는 대신 아이디 / 패스워드를 입력하거나 휴대폰에 전달된 SMS에 적혀있는 코드를 입력하는 것이다.
- 인증요소는 하나일 수도 있고 두 개 또는 그 이상일 수도 있다.
- 인증과 달리 인가는 어떤 개체가 어떤 리소스에 접근할 수 있는지 또는 어떤 동작을 수행할 수 있는지 검증하는 것, 즉 접근권한을 얻는 일을 말한다.
- 예를들어 공연장에 입장하기 위해 티켓을 구매하는 상황을 생각해보자. 이 경우 공연 기획에서는 여러분의 신원이 무엇인지에 대해서는 관심이 없고 공연장에 입장할 권한이 있는지 여부에만 관심이있다.
- 입장 권한을 증명하려면 신분중이나 여권 대신 티켓만 있으면 된다. 티켓 여러분의 신원 정보를 포함하고 있지 않더라도 인가 과정에서 검증이 실패하는것이 아니다.
- 인터넷 기반 앱에서는 일반적으로
토큰
이라 부르는 가공물을 사용하여 인가를 다룬다. 유저가 로그인을 하면 앱은 유저가 무엇을 할 수 있는가에 관심을 갖게 된다. 위 예에서는 사용자 신원을 바탕을 세부사항을 가진 토큰을 생성하게 된다. - 시스템은 인가 토큰을 이용해서 어떤 권한을 부여할 지, 즉 리소스 접근 요청을 허용할지 거부할지를 결정한다.
인증과 인가가 무엇을 뜻하는지 밝히긴 했지만 이 용어들은 자주 중복해서 사용되고 혼란의 원인이 된다. 예를 들어 은행의 예에서 은행직원에게 건넨 신분증은 직원이 여러분 계좌에 자산에 접근하기 위한 인가에도 사용한다. 비슷한 시나리오로, 회의실 출입을 제어하기 위해 배지를 사용하는 회사는 배지를 이용해서 사람(이름과 사진)을 인증하고 접근을 인가한다. 보신 것처럼 인증과 인가는 어떤 시나리오에서는 서로 바꿔서 사용할 수 있는 주제이다. 그래서 혼란을 야기한다.
중요한 점은 인증은 인가로 이어지지만 인가는 인증으로 이어지지 않는다는 점입니다. 신원증명이 접근 권한을 승인하기에 충분하다고 해도, 즉 무언가를 얻는데 인가를 받을 수 있다고 해도 인가가 항상 개체를 식별하는 데 사용할 수 있는게 아니라는거다.
예를 들어 탑승권은 비행기를 타는 데 인가를 하는 역할도 하고 신원 데이터도 포함하고 있다. 그래서 승무원들은 탑승권으로 여러분의 이름을 알 수 있습니다. 하지만 공연 티켓은 신원 세부사항을 담고 있지는 않는다. 티켓은 단지 공연장에 입장할 권리를 나타낼 뿐 다른 무엇도 아니라는 것이다.
- 인증은 유저나 디바이스의 신원을
증명
하는 행위다. - 인가는 유저나 디바이스에게 접근 권한을 부여하거나 거부하는 행위다.
- 인증은 인가 의사결정의 한 요소가 될 수 있습니다.
- 인가 가공물(토큰)로 유저나 디바이스의 신원을 파악하는 방법은 유용하지 않습니다.