OAuth 개요
OAuth(Open Authorization)는 사용자가 실제 로그인 자격 증명을 공유하지 않고도 한 웹 사이트나 응용 프로그램의 리소스에 대한 제한된 액세스 권한을 다른 웹 사이트나 응용 프로그램에 부여할 수 있도록 하는 인증 프로토콜입니다.
OAuth는 사용자 이름과 비밀번호를 공개하지 않고도 한 서비스가 다른 서비스의 데이터에 액세스할 수 있도록 권한을 부여할 수 있는 신뢰할 수 있는 중개자 역할을 합니다. 이 문서에는 OAuth 워크플로우에 대한 기술적인 설명과 실용적인 OAuth 비유 설명이 포함되어 있습니다.
OAuth 워크플로우
OAuth는 사용자가 로그인 자격 증명을 공유하지 않고도 다양한 웹 사이트와 응용 프로그램에서 본인의 데이터에 대한 액세스 권한을 부여할 수 있는 안전하고 표준화된 방법을 제공합니다. 이를 통해 사용자는 어떤 서비스가 사용자의 데이터에 액세스할 수 있는지 제어할 수 있으며 언제든지 액세스를 해지할 수 있습니다.
다음 목록은 OAuth 작동 방식에 대한 단계별 설명입니다.
귀하(사용자)가 사용하려는 웹 사이트나 응용 프로그램("클라이언트"라고 함)에서 다른 웹 사이트나 응용 프로그램("리소스 서버"라고 함)에 있는 귀하의 데이터에 액세스해야 합니다.
클라이언트는 리소스 서버에서 데이터에 액세스할 수 있는 권한을 요청합니다. 일반적으로 리소스 서버의 로그인 페이지로 리디렉션하여 이 작업을 수행합니다.
리소스 서버의 로그인 페이지에 로그인 자격 증명을 직접 입력합니다. 귀하의 사용자 이름과 비밀번호는 클라이언트와 절대 공유되지 않기 때문에 이 단계는 매우 중요합니다.
리소스 서버는 자격 증명을 확인하고 귀하를 인증합니다. 인증되면 클라이언트에 대한 고유 액세스 토큰이 생성됩니다.
리소스 서버는 리디렉션과 함께 액세스 토큰을 제공하여 귀하를 다시 클라이언트 응용 프로그램으로 리디렉션합니다.
클라이언트는 액세스 토큰을 수신하고 귀하의 데이터에 액세스해야 할 때마다 해당 액세스 토큰을 리소스 서버로 보냅니다.
리소스 서버는 액세스 토큰의 유효성을 확인합니다. 토큰이 유효하면 제한된 기간 동안 요청된 리소스에 대한 클라이언트 액세스 권한을 부여합니다.
클라이언트는 부여된 액세스 권한을 사용하여 리소스 서버에서 데이터를 검색하거나 수정할 수 있지만 액세스 토큰에 의해 정의된 범위 내에서만 가능합니다. 범위는 클라이언트가 액세스할 수 있는 동작과 데이터에 따라 결정됩니다.
액세스 토큰이 만료되거나 클라이언트에 추가적인 사용 권한이 필요한 경우 클라이언트는 다시 인증 프로세스를 거쳐 새로운 액세스 토큰을 요청할 수 있습니다.
실용적인 OAuth 비유
다음은 실용적인 시나리오를 사용하여 OAuth가 작동하는 방식을 비유 설명합니다.
여러분이 파티를 열고 음식을 담당할 출장 요리사(클라이언트)를 고용하려는 경우를 상상해 보십시오. 하지만 출장 요리사에게 집 열쇠(로그인 자격 증명)를 제공하고 싶지는 않을 것입니다. 그렇게 하면 모든 개인 소지품에 접근할 수 있기 때문입니다. 이런 이유로, 신뢰할 수 있는 파티 주최자(OAuth)를 통해 액세스를 관리하려 합니다.
여러분이 파티 주최자에게 출장 요리사를 고용하고 싶다고 말합니다. 파티 주최자는 여러분의 집과 출장 요리사 서비스에 대한 액세스를 처리하는 방법을 알고 있습니다.
파티 주최자는 출장 요리사에게 연락하여 회의를 위해 여러분의 집으로 모이라고 합니다. 여러분은 지금 집에 없습니다.
출장 요리사가 여러분의 집에 도착했지만 여러분의 허가(액세스 토큰) 없이는 들어갈 수 없다는 것을 깨달았습니다. 출장 요리사는 여러분에게 전화하여 액세스를 요청합니다.
주택 소유자로서 여러분은 액세스 권한을 부여하기 전에 출장 요리사의 신뢰성을 확인하고 싶습니다. 따라서 여러분은 출장 요리사에게 신원 확인(인증)을 위해 몇 가지 질문을 합니다.
출장 요리사의 자격 증명에 만족하면 전화를 통해 임시 액세스 코드(액세스 토큰)를 제공합니다. 이 코드를 통해 출장 요리사는 여러분의 집에 들어가 음식을 준비할 수 있지만 요리 업무 범위 내에서만 가능합니다.
출장 요리사가 액세스 코드를 사용하여 집에 들어와 음식 준비를 시작합니다. 주방과 식사 공간에는 액세스할 수 있지만 다른 방에는 들어갈 수 없습니다.
지정된 기간이 지나거나 파티가 끝나면 액세스 코드가 만료되어 출장 요리사가 여러분의 허락 없이 여러분의 집에 다시 들어갈 수 없도록 합니다.
이 시나리오에서 여러분(주택 소유자)은 사용자이고, 출장 요리사는 클라이언트 응용 프로그램이고, 여러분의 집은 리소스 서버의 개인 데이터를 나타내며, 파티 주최자는 OAuth입니다.
액세스 토큰 역할의 액세스 코드는 로그인 자격 증명(집 열쇠)을 손상시키지 않으면서 리소스(집)에 대한 클라이언트(출장 요리사)의 제한된 액세스를 허용합니다.
OAuth는 신뢰할 수 있는 중개자 역할을 하여 액세스 권한에 대한 제어를 유지하면서 서비스 간에 데이터의 안전한 공유를 촉진합니다.