다른 API에서 API 호출
개발자로서 다른 API를 호출해야 하는 API가 하나 있는 경우 제로 트러스트 어떻게 해야 하나요? 이 문서에서는 사용자를 대신하여 작업할 때 애플리케이션을 안전하게 개발하는 방법을 알아봅니다.
사용자가 앱의 UI를 구동하는 경우 앱은 위임된 권한을 사용하여 API에서 앱이 작동하는 사용자를 알 수 있습니다. 앱이 API를 호출할 때 제공하는 액세스 토큰에서 주체(하위) 클레임 또는 개체 ID(oid) 및 테넌트 ID(tid) 클레임을 검사합니다. API는 네트워크 어딘가에서 오는 호출인 신뢰할 수 없는 앱에 의존하지 않습니다. 대신 토큰의 유효성을 검사하여 API가 Microsoft Entra ID가 확인한 앱 사용자를 대신하여만 작동하는지 확인합니다.
한 API(원래 API라고도 합니다)가 다른 API를 호출하는 경우 호출하는 API(다운스트림 API라고도 합니다)는 위에서 설명한 유효성 검사 프로세스를 따르는 것이 중요합니다. 다운스트림 API는 신뢰할 수 없는 네트워크 원본을 사용할 수 없습니다. 올바르게 유효성이 검사된 액세스 토큰에서 사용자 ID를 가져와야 합니다.
다운스트림 API가 적절한 유효성 검사 프로세스를 따르지 않는 경우 다운스트림 API는 원래 API를 사용하여 다른 방식으로 사용자의 ID를 제공해야 합니다. 다운스트림 API는 애플리케이션 권한을 잘못 사용하여 작업을 수행할 수 있습니다. 그런 다음 원래 API는 사용자가 다운스트림 API에 대해 어떤 결과를 얻을 수 있는 유일한 권한이 됩니다. 원래 API는 사용자가 의도치 않게(또는 의도치 않게) 사용자가 수행할 수 없는 작업을 수행할 수 있도록 할 수 있습니다. 예를 들어 한 사용자가 다른 사용자의 세부 정보를 변경하거나 사용자에게 액세스 권한이 없는 문서를 읽고 업데이트할 수 있습니다. 잘못된 유효성 검사로 인해 심각한 보안 문제가 발생할 수 있습니다.
보안을 높이기 위해 원래 API는 원래 API가 호출할 때 다운스트림 API에 제공할 위임된 권한 액세스 토큰을 획득합니다. 어떻게 작동하는지 살펴보겠습니다.
클라이언트 앱이 원래 API를 호출하는 액세스 토큰을 획득합니다.
다음 다이어그램은 클라이언트 앱 및 원래 API를 보여줍니다.
클라이언트 애플리케이션은 원래 API에 위임된 권한 액세스 토큰("A" 레이블이 있는 펜타곤 셰이프로 표시됨)을 획득했습니다. 위임된 권한 액세스 토큰을 사용하면 사용자를 대신하여 권한 부여가 필요한 원래 API를 호출할 수 있습니다.
클라이언트 앱은 원래 API에 대한 액세스 토큰을 제공합니다.
다음 애니메이션은 원래 API에 액세스 토큰을 제공하는 클라이언트 앱을 보여줍니다. 원래 API는 액세스 토큰의 유효성을 완전히 검사하고 검사하여 클라이언트 앱 사용자의 ID를 확인합니다.
원래 API는 토큰 유효성 검사 및 적용을 수행합니다.
다음 애니메이션은 클라이언트 앱이 원래 API에 대한 액세스 토큰을 제공하면 원래 API가 토큰 유효성 검사 및 적용을 수행한다는 것을 보여줍니다. 모두 좋은 경우 API는 클라이언트 앱에 대한 요청을 진행하고 서비스를 제공합니다.
원래 API는 액세스 토큰을 사용하여 다운스트림 API를 호출할 수 없습니다.
다음 애니메이션은 원래 API가 이제 다운스트림 API를 호출하려고 한다는 것을 보여 줍니다. 그러나 원래 API는 액세스 토큰을 사용하여 다운스트림 API를 호출할 수 없습니다.
원래 API가 Microsoft Entra ID로 돌아갑니다.
다음 애니메이션에서 원래 API는 Microsoft Entra ID로 돌아가야 합니다. 사용자를 대신하여 다운스트림 API를 호출하려면 액세스 토큰이 필요합니다.
다음 애니메이션은 원래 API가 클라이언트 앱에서 받은 토큰과 원래 API의 클라이언트 자격 증명을 제공하는 원본 API를 보여줍니다.
Microsoft Entra ID는 동의 또는 조건부 액세스 적용과 같은 항목을 확인합니다. 호출 클라이언트로 돌아가서 토큰을 가져올 수 없는 이유를 제공해야 할 수 있습니다. 일반적으로 클레임 챌린지 프로세스를 사용하여 동의를 받지 못하는 정보(예: 조건부 액세스 정책과 관련됨)와 관련된 정보를 사용하여 호출 애플리케이션으로 돌아갑니다.
Microsoft Entra ID가 검사를 수행합니다.
다음 애니메이션에서 Microsoft Entra ID는 검사를 수행합니다. 모든 것이 정상이면 Microsoft Entra ID는 사용자를 대신하여 다운스트림 API를 호출하기 위해 원본 API에 대한 액세스 토큰을 발급합니다.
원래 API에는 On-Behalf-Of 흐름이 있는 사용자 컨텍스트가 있습니다.
다음 애니메이션은 다운스트림 API를 호출할 때 API가 사용자 컨텍스트를 계속 가질 수 있도록 하는 OBO(On-Behalf-Of 흐름) 프로세스를 보여 줍니다.
원래 API는 다운스트림 API를 호출합니다.
다음 애니메이션에서는 다운스트림 API를 호출합니다. 다운스트림 API가 수신하는 토큰에는 다운스트림 API를 나타내는 적절한 대상 그룹(aud) 클레임이 있습니다.
토큰에는 허용된 동의 범위와 원래 앱 사용자 ID가 포함됩니다. 다운스트림 API는 유효한 권한을 올바르게 구현하여 식별된 사용자에게 요청된 작업을 수행할 수 있는 권한이 있는지 확인할 수 있습니다. 흐름을 대신하여 API에 대한 토큰을 획득하여 다른 API를 호출하여 사용자 컨텍스트가 모든 다운스트림 API로 전달되도록 하려고 합니다.
최상의 옵션: 원래 API는 On-Behalf-Of 흐름을 수행합니다.
이 마지막 애니메이션은 원래 API가 OBO(On-Behalf-Of 흐름)를 수행하는 것이 가장 좋은 옵션임을 보여 줍니다. 다운스트림 API가 올바른 토큰을 받으면 올바르게 응답할 수 있습니다.
API가 사용자를 대신하여 작동하고 다른 API를 호출해야 하는 경우 API는 OBO를 사용하여 사용자를 대신하여 다운스트림 API를 호출하는 위임된 권한 액세스 토큰을 획득해야 합니다. API가 사용자를 대신하여 작동할 때 API는 애플리케이션 권한을 사용하여 다운스트림 API를 호출해서는 안 됩니다.
다음 단계
- Microsoft ID 플랫폼 인증 흐름 및 앱 시나리오는 인증 흐름 및 사용되는 애플리케이션 시나리오를 설명합니다.
- API Protection은 등록을 통해 API를 보호하고, 사용 권한 및 동의를 정의하고, 제로 트러스트 목표를 달성하기 위해 액세스를 적용하는 모범 사례를 설명합니다.
- Microsoft ID 동의 프레임워크 로 보호되는 API의 예는 최상의 사용자 환경을 위한 최소 권한 애플리케이션 권한 전략을 설계하는 데 도움이 됩니다.
- 토큰 사용자 지정은 Microsoft Entra 토큰에서 받을 수 있는 정보를 설명합니다. 최소 권한으로 애플리케이션 제로 트러스트 보안을 강화하면서 유연성과 제어를 향상시키기 위해 토큰을 사용자 지정하는 방법을 설명합니다.
- Microsoft Identity Learn 모듈을 사용하여 사용자 지정 API 보안 모듈은 Microsoft ID를 사용하여 웹 API를 보호하는 방법과 다른 애플리케이션에서 호출하는 방법을 설명합니다.
- 애플리케이션 속성 에 대한 보안 모범 사례는 리디렉션 URI, 액세스 토큰(암시적 흐름에 사용), 인증서 및 비밀, 애플리케이션 ID URI 및 애플리케이션 소유권을 설명합니다.
- Microsoft ID 플랫폼 인증 라이브러리는 다양한 애플리케이션 유형에 대한 Microsoft 인증 라이브러리 지원을 설명합니다.