API 키 또는 토큰은 REST API의 노출 된 리소스에 대한 액세스 권한을 부여하므로 직접 인증 및 권한 부여 메커니즘의 범주에 속합니다. 이러한 직접 메커니즘은 위임 사용 사례에서 사용할 수 있습니다.
REST 엔드 포인트에 의해 노출 된 리소스 또는 리소스 집합에 대한 액세스 권한을 얻으려면 해당 ID에 따라 요청자 권한을 확인해야합니다. 워크 플로의 첫 번째 단계 는 요청 을 인증 하여 ID를 확인하는 것입니다 . 연속 단계는 정의 된 규칙 집합에 대해 ID를 확인하여 액세스 수준 (즉, 읽기, 쓰기 또는 읽기 / 쓰기) 을 승인 하는 것입니다. 상기 단계가 완료되면 일반적인 추가 관심사는 허용되는 요청 속도입니다 . 즉, 요청자가 주어진 리소스에 대해 수행 할 수있는 초당 요청 수를 의미합니다.
OAuth (Open Authorization) 는 위임 된 액세스를 위한 표준 프로토콜로 , 주요 인터넷 회사에서 비밀번호를 제공하지 않고 액세스 권한을 부여하기 위해 자주 사용합니다. 분명히 OAuth는 위에서 언급 한 문제를 해결하는 프로토콜입니다. 즉, 리소스 소유자를 대신하여 서버 리소스에 대한 보안 위임 액세스를 제공함으로써 인증 및 권한 부여입니다. 제 3자가 리소스 소유자를 대신하여 서버에서 관리하는 리소스에 액세스 할 수 있도록 허용하는 액세스 토큰 메커니즘을 기반으로합니다. 예를 들어 ServiceX는 John이 위임을 승인하면 John을 대신하여 John Smith의 Google 계정에 액세스하려고합니다. 그런 다음 ServiceX는 Google 계정 세부 정보에 액세스 할 수있는 시간 기반 토큰을 발급받으며 이는 읽기 액세스 전용 일 가능성이 높습니다.
API Key의 개념은 위에서 설명한 OAuth Token과 매우 유사합니다. 주요 차이점은 위임이 없다는 점입니다. 사용자는 연속적인 프로그래밍 방식 상호 작용을 위해 서비스 공급자에게 키를 직접 요청합니다. API 키의 경우도 시간 기반입니다. OAuth 토큰으로서의 키에는 시간 임대 또는 만료 기간이 적용됩니다. 추가 측면으로, 키와 토큰은 서비스 계약에 의해 속도 제한을받을 수 있습니다. 즉, 초당 주어진 요청 수만 제공 될 수 있습니다.
요약하자면, 실제로 기존 인증 및 권한 부여 메커니즘과 키 / 토큰 기반 버전 간에는 실제적인 차이가 없습니다. 그러나 패러다임은 약간 다릅니다. 클라이언트와 서버 간의 모든 상호 작용에서 자격 증명을 계속 재사용하는 대신 지원 키 / 토큰을 사용하여 전체 상호 작용 환경을 더 원활하고 안전하게 만듭니다 (종종 JWT 표준, 키 및 토큰은 제작을 피하기 위해 서버에 의해 디지털 서명됩니다.)
- 직접 인증 및 승인 : 기존 자격 증명 기반 버전의 변형 인 키 기반 프로토콜입니다.
- 위임 된 인증 및 권한 부여 : OAuth 기반 프로토콜과 마찬가지로 토큰을 다시 자격 증명 기반 버전의 변형으로 사용합니다 (전체 목표는 제 3 자에게 비밀번호를 공개하지 않는 것입니다).
두 범주 모두 관심있는 리소스를 소유 한 서버와의 첫 번째 상호 작용을 위해 전통적인 신원 확인 워크 플로를 사용합니다.