Tips/인증 인가

인증(Authentication) vs. 인가(Authorization)

dextto™ 2021. 11. 14. 21:24

인증(Authentication)과 인가(Authorization)는 항상 함께 등장하는 개념이면서 사용하기에 헷갈리는 용어이기도 합니다. 문맥상 어색하지 않은 경우가 있어 이 둘의 차이를 두지 않고 사용하는 경우도 빈번합니다. 인증/인가 서비스를 제공하는 Auth0 사의 블로그에 이 둘에 대한 설명이 잘 소개되어 있어 번역해 보았습니다.


인증과 인가는 최신 컴퓨터 시스템에서 널리 사용되지만 사람들이 종종 혼동하는 용어입니다. 이 두 용어는 모두 보안과 관련이 있습니다.

인증이란?

인증은 어떤 개체(사용자 또는 장치)의 신원을 확인하는 과정입니다. 개체는 보통 어떤 인증요소를 증거로 제시하여 자신을 인증합니다. 예를 들어 은행에 가서 돈을 인출하려면 하면 은행직원은 여러분이 누구인지 확인하기 위해 신분증을 제시해 달라고 요청할 수 있습니다. 비행기 티켓을 구매하려고 하면 여러분이 비행기를 탈 수 있는 자격이 되는지 증명하기 위해 여권을 제시해야 할 수도 있습니다. 두 예 모두 신원(인증된 사용자)을 확인하기 위해 인증 절차가 어떻게 진행되는지를 보여줍니다.

 

온라인에서도 마찬가지입니다. 예를 들어 여러분이 페이스북 프로필이나 회사 메일 클라이언트 프로그램에 접속하려고 할 때 비슷한 일이 일어납니다. 신분증이나 여권을 제시하는 대신 아이디/패스워드를 입력하거나 휴대폰에 전달된 SMS에 적혀있는 코드를 입력하는 것이지요. 인증요소는 하나일 수도 있고 두 개(two-factor) 또는 그 이상(multi-factor)일 수도 있습니다.

인가란?

인증과 달리 인가는 어떤 개체가 어떤 리소스에 접근할 수 있는지 또는 어떤 동작을 수행할 수 있는지를 검증하는 것, 즉 접근 권한을 얻는 일을 말합니다. 예를 들어 공연장에 입장하기 위해 티켓을 구매하는 상황을 생각해 보세요. 이 경우 공연 기획사에서는 여러분의 신원이 무엇인지에 대해서는 관심이 없습니다. 여러분이 공연장에 입장할 권한이 있는지 여부에만 관심이 있죠. 입장 권한을 증명하려면 신분증이나 여권 대신 티켓만 있으면 됩니다. 티켓 여러분의 신원 정보를 포함하고 있지 않더라도 인가 과정에서 검증이 실패하는 것이 아니지요.

인터넷 기반 앱에서는 일반적으로 토큰이라 부르는 가공물을 사용하여 인가를 다룹니다. 유저가 로그인을 하면 앱은 유저가 무엇을 할 수 있는가에 관심을 갖게 됩니다. 위 예에서는 사용자 신원을 바탕으로 인가 세부사항을 가진 토큰을 생성하게 됩니다. 시스템은 인가 토큰을 이용해서 어떤 권한을 부여할 지, 즉 리소스 접근 요청을 허용할 지 거부할지를 결정합니다.

인증 vs. 인가

인증과 인가가 무엇을 뜻하는지 밝히긴 했지만 이 용어들은 자주 중복해서 사용되고 혼란의 원인이 됩니다. 예를 들어 은행의 예에서 은행직원에게 건넨 신분증은 직원이 여러분 계좌의 자산에 접근하기 위한 인가에도 사용합니다. 비슷한 시나리오로, 회의실 출입을 제어하기 위해 배지를 사용하는 회사는 배지를 이용해서 사람(이름과 사진)을 인증하고 접근을 인가합니다. 보신 것처럼 인증가 인가는 어떤 시나리오에서는 서로 바꿔서 사용할 수 있는 주제입니다. 그래서 혼란을 야기합니다.

 

중요한 점은 인증은 인가로 이어지지만 인가는 인증으로 이어지지는 않는다는 점입니다. 신원증명이 접근 권한을 승인하기에 충분하다고 해도, 즉 무언가를 얻는데 인가를 받을 수 있다고 해도 인가가 항상 개체를 식별하는 데 사용할 수 있는 게 아니라는 거지요.

예를 들어 탑승권은 비행기를 타는 데 인가를 하는 역할도 하고 신원 데이터도 포함하고 있습니다. 그래서 승무원들은 탑승권으로 여러분의 이름을 알 수 있습니다. 하지만 공연 티켓은 신원 세부사항을 담고 있지는 않겠죠. 티켓은 단지 공연장에 입장할 권리를 나타낼 뿐 다른 무엇도 아니라는 것입니다.

요약

  • 인증은 유저나 디바이스의 신원을 증명하는 행위입니다.
  • 인가는 유저나 디바이스에게 접근권한을 부여하거나 거부하는 행위입니다.
  • 인증은 인가 의사결정의 한 요소가 될 수 있습니다.
  • 인가 가공물(토큰)로 유저나 디바이스의 신원을 파악하는 방법은 유용하지 않습니다.
반응형

'Tips > 인증 인가' 카테고리의 다른 글

슬라이딩 세션과 리프레시 토큰  (0) 2021.11.17
JWT (JSON Web Token)  (0) 2021.11.06