이 문서에서는 Power Platform API를 호출하기 위한 Microsoft Entra 설정에 대한 개요를 제공합니다. Power Platform API를 통해 사용 가능한 리소스에 액세스하려면 Microsoft Entra에서 전달자 토큰을 가져와서 각 요청과 함께 헤더로 보내야 합니다. 지원하는 ID 유형(사용자 및 서비스 주체)에 따라 이 문서에 설명된 대로 이 전달자 토큰을 가져오는 흐름이 다릅니다.
올바른 권한으로 전달자 토큰을 가져오려면 다음 단계를 완료합니다.
1단계. Microsoft Entra 테넌트에서 애플리케이션 등록 생성
- Azure Portal로 이동합니다.
- 페이지 맨 위에서 Microsoft Entra ID 를 선택합니다. 그런 다음, +앱 등록 추가 > 를 선택합니다.
-
애플리케이션 등록 페이지를 입력합니다.
- 이름 - Power Platform Admin SDK와 같이 애플리케이션에 인식할 수 있는 이름을 지정합니다.
- 지원되는 계정 유형 - 단일 테넌트만 선택 - <회사 이름>.
- 리디렉션 URI - 지금은 건너뜁니다. 3단계에서 구성합니다.
- 등록을 선택하여 애플리케이션을 만듭니다. 등록이 완료되면 개요 페이지에서 애플리케이션(클라이언트) ID 및 디렉터리(테넌트) ID 를 적어둡니다. 나중에 두 값이 모두 필요합니다.
Azure CLI를 사용하여 등록을 만들 수도 있습니다.
az login
az ad app create --display-name "Power Platform Admin SDK" --sign-in-audience AzureADMyOrg
이 명령은 JSON 개체를 반환합니다. 값을 적어둡 appId 니다. 이 값은 클라이언트 ID입니다.
2단계. API 권한 구성
새 앱 등록에서 관리 - API 권한 탭으로 이동합니다. 사용 권한 구성 섹션에서 사용 권한추가를 선택합니다. 대화 상자에서 조직에서 사용하는 API 탭을 선택한 다음 Power Platform API를 검색합니다. 이 항목과 비슷한 이름의 항목이 여러 개 표시될 수 있으므로 GUID 8578e004-a5c6-46e7-913e-12f58912df43과 함께 사용해야 합니다.
GUID로 검색할 때 목록에 Power Platform API가 표시되지 않는 경우에도 액세스할 수 있지만 표시 유형은 새로 고쳐지지 않습니다. 새로 고침을 강제 적용하려면 다음 스크립트를 실행합니다.
#Install the Microsoft Graph PowerShell SDK module
Install-Module Microsoft.Graph -Scope CurrentUser -Repository PSGallery -Force
Connect-MgGraph
New-MgServicePrincipal -AppId 8578e004-a5c6-46e7-913e-12f58912df43 -DisplayName "Power Platform API"
여기에서 필요한 권한을 선택합니다. 이러한 권한은 네임스페이스별로 그룹화됩니다. 네임스페이스 내에 애플리케이션 패키지에 대한 읽기 권한을 제공하는 AppManagement.ApplicationPackages.Read와 같은 리소스 유형 및 작업이 표시됩니다. 자세한 내용은 사용 권한 참조 문서를 참조하세요.
노트
Power Platform API는 현재 위임된 권한만 사용합니다. 사용자 컨텍스트로 실행되는 애플리케이션의 경우 범위 매개 변수를 사용하여 위임된 권한을 요청합니다. 이러한 권한은 로그인한 사용자의 권한을 애플리케이션에 위임하므로 Power Platform API 엔드포인트를 호출할 때 사용자 역할을 할 수 있습니다.
서비스 주체 ID의 경우 애플리케이션 권한을 사용하지 마세요. 대신 앱 등록을 만든 후 RBAC 역할을 할당하여 범위가 지정된 권한(예: 참가자 또는 읽기 권한자)을 부여합니다. 자세한 내용은 자습서: 서비스 주체에 RBAC 역할 할당을 참조하세요.
애플리케이션에 필요한 권한을 추가한 후 관리자 동의 부여 를 선택하여 설치를 완료합니다. 관리자 동의를 부여하면 테넌트의 모든 사용자가 앱을 처음 사용할 때 대화형 동의 대화 상자가 표시되지 않도록 권한을 부여합니다. 사용자당 대화형 동의를 선호하는 경우 Microsoft ID 플랫폼 및 OAuth 2.0 권한 부여 코드 흐름을 따릅니다.
Azure CLI를 사용하여 관리자 동의를 부여할 수도 있습니다.
# Replace <app-id> with your application (client) ID
az ad app permission admin-consent --id <app-id>
3단계. 플랫폼 구성 및 리디렉션 URI
사용자를 대신하여 인증하는 SDK, PowerShell 스크립트 및 데스크톱 애플리케이션에는 Microsoft Entra가 인증 후 토큰을 애플리케이션으로 다시 반환할 수 있도록 리디렉션 URI가 필요합니다.
앱 등록 내에서 관리 - 인증으로 이동합니다.
리디렉션 URI 추가를 선택한 다음, 모바일 및 데스크톱 애플리케이션을 선택합니다.
다음 기본 제공 리디렉션 URI를 선택합니다.
https://login.microsoftonline.com/common/oauth2/nativeclient저장할 구성 을 선택합니다.
Azure CLI를 사용하여 리디렉션 URI를 추가할 수도 있습니다.
# Replace <app-id> with your application (client) ID
az ad app update --id <app-id> --public-client-redirect-uris https://login.microsoftonline.com/common/oauth2/nativeclient
공용 클라이언트 설정
동일한 인증 탭의 고급 설정 섹션 아래에 공용 클라이언트 흐름 허용 토글이 있습니다. 토큰 요청 본문에서 직접 사용자 이름과 암호를 보내는 ROPC(리소스 소유자 암호 자격 증명) 흐름을 사용하려는 경우에만 이 토글을 예 로 설정합니다.
다단계 인증을 사용하도록 설정된 계정에는 이 흐름이 작동하지 않습니다. 대화형 브라우저 또는 디바이스 코드 흐름의 경우 이 설정을 사용하도록 설정할 필요가 없습니다.
4단계. (선택 사항) 인증서 및 비밀 구성
앱에서 리소스를 서비스 주체라고도 하는 자체 리소스를 읽고 작성해야 하는 경우 인증하는 두 가지 방법이 있습니다. 인증서를 사용하려면 관리 - 인증서 및 비밀로 이동합니다. 인증서 섹션에서 인증하는 데 사용할 수 있는 x509 인증서를 업로드합니다.
다른 방법은 비밀 섹션을 사용하여 클라이언트 암호를 생성하는 것입니다. 자동화 요구 사항에 사용할 수 있도록 안전한 위치에 비밀을 저장하세요. 인증서 또는 비밀 옵션을 사용하면 Microsoft Entra로 인증하고 REST API 또는 PowerShell cmdlet에 전달하는 이 클라이언트에 대한 토큰을 받을 수 있습니다.
5단계. 액세스 토큰 요청
액세스 전달자 토큰은 두 가지 방법으로 얻을 수 있습니다. 한 가지 방법은 사용자 이름과 암호를 위한 것이고 다른 방법은 서비스 주체를 위한 것입니다.
사용자 이름 및 암호 흐름
공용 클라이언트 섹션을 읽어야 합니다. 그런 다음 HTTP를 통해 Microsoft Entra ID에 사용자 이름 및 암호 페이로드와 함께 POST 요청을 보냅니다.
Content-Type: application/x-www-form-urlencoded
Host: login.microsoftonline.com
Accept: application/json
POST https://login.microsoftonline.com/YOUR_TENANT.COM/oauth2/v2.0/token
BODY:
client_id={CLIENT_ID_FROM_AZURE_CLIENT_APP}&scope=https://api.powerplatform.com/.default&username={USER_EMAIL_ADDRESS}&password={PASSWORD}&grant_type=password
앞의 예제에는 Microsoft Entra ID의 클라이언트 애플리케이션에서 검색할 수 있는 자리 표시자가 포함되어 있습니다. Power Platform API를 후속 호출하는 데 사용할 수 있는 응답을 받습니다.
{
"token_type": "Bearer",
"scope": "https://api.powerplatform.com/AppManagement.ApplicationPackages.Install https://api.powerplatform.com/AppManagement.ApplicationPackages.Read https://api.powerplatform.com/.default",
"expires_in": 4747,
"ext_expires_in": 4747,
"access_token": "eyJ0eXAiOiJKV1QiLCJu..."
}
Authorization HTTP 헤더가 있는 Power Platform API에 대한 후속 호출에서 access_token 값을 사용합니다.
서비스 주체 흐름
인증서 및 비밀 구성 섹션을 읽어야 합니다. 그런 다음 HTTP를 통해 Microsoft Entra ID에 클라이언트 비밀 페이로드와 함께 POST 요청을 보냅니다. 이 인증 방법을 서비스 주체 인증이라고도 합니다.
중요
서비스 주체 인증을 사용하기 전에 이 문서의 앞부분에 있는 1-4단계를 완료하여 인증서 또는 클라이언트 암호를 사용하여 앱 등록을 만들고 구성합니다. 그런 다음 서비스 주체에 RBAC 역할을 할당하여 액세스 수준을 제어합니다. 자세한 내용은 자습서: 서비스 주체에 RBAC 역할 할당을 참조하세요.
Content-Type: application/x-www-form-urlencoded
Host: login.microsoftonline.com
Accept: application/json
POST https://login.microsoftonline.com/YOUR_TENANT.COM/oauth2/v2.0/token
BODY:
client_id={CLIENT_ID_FROM_AZURE_CLIENT_APP}&scope=https://api.powerplatform.com/.default&client_secret={SECRET_FROM_AZURE_CLIENT_APP}&grant_type=client_credentials
앞의 예제에는 Microsoft Entra ID의 클라이언트 애플리케이션에서 검색할 수 있는 자리 표시자가 포함되어 있습니다. Power Platform API를 후속 호출하는 데 사용할 수 있는 응답을 받습니다.
{
"token_type": "Bearer",
"expires_in": 3599,
"ext_expires_in": 3599,
"access_token": "eyJ0eXAiOiJKV1..."
}
Authorization HTTP 헤더가 있는 Power Platform API에 대한 후속 호출에서 access_token 값을 사용합니다. 서비스 주체의 유효 권한은 할당된 RBAC 역할에 의해 결정됩니다. 역할을 할당하는 방법을 알아보려면 자습서: 서비스 주체에 RBAC 역할 할당을 참조하세요.
Azure CLI 빠른 시작
다음 스크립트는 앱 등록 종단 간을 만듭니다. 각 명령을 순서대로 실행하고 자리 표시자 값을 사용자 고유의 값으로 바꿉다.
# Sign in to Azure CLI
az login
# Create the app registration (single tenant)
az ad app create --display-name "Power Platform Admin SDK" --sign-in-audience AzureADMyOrg
# Save the app ID from the output, then create a service principal for it
az ad sp create --id <app-id>
# Add a delegated permission (example: AppManagement.ApplicationPackages.Read)
# The --api value is the Power Platform API app ID.
# The --api-permissions value is the permission ID and type (Scope = delegated).
# Repeat this command for each permission you need. See the Permission reference for IDs.
az ad app permission add --id <app-id> \
--api 8578e004-a5c6-46e7-913e-12f58912df43 \
--api-permissions <permission-id>=Scope
# Grant admin consent so users aren't prompted individually
az ad app permission admin-consent --id <app-id>
# Add the native client redirect URI for interactive auth
az ad app update --id <app-id> \
--public-client-redirect-uris https://login.microsoftonline.com/common/oauth2/nativeclient
이러한 명령을 실행한 후에는 SDK, PowerShell 또는 직접 REST 호출을 사용하여 앱 등록을 사용할 수 있습니다. 매개 변수에 대한 사용 권한 ID를 --api-permissions 조회하려면 사용 권한 참조를 참조하세요.
일반적인 문제 해결
"동의 필요" 또는 "관리자 승인 필요" 오류
이 오류는 관리자가 앱 등록에 대한 API 권한에 동의하지 않은 경우에 발생합니다. 앱 등록으로> 이동하여 앱 >API 사용 권한을 선택하고 관리자 동의 부여를 선택합니다.
또는 다음을 실행합니다.
az ad app permission admin-consent --id <app-id>
"사용자가 애플리케이션의 역할에 할당되지 않았습니다." 오류
이 오류는 앱 등록과 연결된 엔터프라이즈 애플리케이션에 사용자 할당이 필요 하면 Yes로 설정되었음을 의미합니다. 이 설정을 사용하도록 설정하면 애플리케이션에 명시적으로 할당된 사용자 또는 그룹만 로그인할 수 있습니다. 이 오류를 해결하려면 다음 작업 중 하나를 수행합니다.
- 앱 속성을Microsoft Entra ID>Enterprise 애플리케이션>> 으로 이동하고 할당을아니요로 설정합니다.
- 사용자 및 그룹 아래에 관련 사용자 또는 보안 그룹을 추가합니다.
액세스를 차단하는 조건부 액세스 정책
조직에서 조건부 액세스 정책을 적용하는 경우 앱 등록에 대한 토큰 획득을 차단할 수 있습니다. 일반적인 원인으로는 디바이스 준수 요구 사항, 위치 제한 또는 위험 기반 정책이 있습니다. Microsoft Entra 관리자와 협력하여 정책에서 앱 등록을 제외하거나 클라이언트가 정책 요구 사항을 충족하는지 확인합니다.
API 선택기에서 "Power Platform API"를 찾을 수 없음
API 권한 대화 상자에서 이름 또는 GUID로 Power Platform API 를 검색하면 결과가 반환되지 않으면 서비스 주체가 테넌트에 만들어지지 않습니다. 2단계의 강제 새로 고침 단계에 따라 만듭니다.
Power Platform SDK 및 PowerShell을 사용하여 인증
다음 예제에서는 각 SDK 및 PowerShell을 사용하여 샘플 API 호출을 인증하고 만드는 방법을 보여 줍니다. 이러한 예제를 실행하기 전에 이 문서의 앞부분에 있는 1-3단계를 완료하여 앱 등록을 만들고 구성합니다.
대화형 인증(위임된 사용자)
대화형 인증은 사용자가 로그인할 수 있는 브라우저 창을 엽니다. 이 흐름은 개발자 스크립트, 관리 도구 및 사용자가 있는 모든 시나리오에 가장 적합합니다.
# Sign in interactively (opens a browser)
Connect-AzAccount
# Get an access token for the Power Platform API
$token = Get-AzAccessToken -ResourceUrl "https://api.powerplatform.com"
# Call the List Environments endpoint as an example
$headers = @{ Authorization = "Bearer $($token.Token)" }
$environments = Invoke-RestMethod -Uri "https://api.powerplatform.com/environmentmanagement/environments?api-version=2024-10-01" -Headers $headers
$environments.value | Format-Table name, properties.displayName
기밀 클라이언트(서비스 주체)
기밀 클라이언트 인증은 클라이언트 암호 또는 인증서를 사용하며 사용자 상호 작용이 필요하지 않습니다. 이 인증 흐름은 백그라운드 서비스, 파이프라인 및 자동화에 가장 적합합니다.
중요
서비스 주체 인증을 사용하기 전에 위의 1-4단계를 완료하여 인증서 또는 클라이언트 암호를 사용하여 앱 등록을 만들고 구성합니다. 그런 다음 서비스 주체에 RBAC 역할을 할당하여 액세스 수준을 제어합니다. 자세한 내용은 자습서: 서비스 주체에 RBAC 역할 할당을 참조하세요.
$tenantId = "YOUR_TENANT_ID"
$clientId = "YOUR_CLIENT_ID"
$clientSecret = "YOUR_CLIENT_SECRET"
# Request a token using client credentials
$body = @{
client_id = $clientId
scope = "https://api.powerplatform.com/.default"
client_secret = $clientSecret
grant_type = "client_credentials"
}
$tokenResponse = Invoke-RestMethod -Method Post `
-Uri "https://login.microsoftonline.com/$tenantId/oauth2/v2.0/token" `
-ContentType "application/x-www-form-urlencoded" `
-Body $body
# Call the List Environments endpoint as an example
$headers = @{ Authorization = "Bearer $($tokenResponse.access_token)" }
$environments = Invoke-RestMethod -Uri "https://api.powerplatform.com/environmentmanagement/environments?api-version=2024-10-01" -Headers $headers
$environments.value | Format-Table name, properties.displayName
관련 콘텐츠
자습서: 서비스 주체에 RBAC 역할 할당
Power Platform 관리 센터에 대한 역할 기반 액세스 제어
권한 참조