使用 PowerShell 创建服务主体应用程序

通过用户名和密码进行身份验证通常并不理想,尤其是随着多重身份验证的兴起。 在这种情况下,首选使用服务主体(或客户端凭据流)身份验证。 这可以通过在您自己的 Microsoft Entra 租户中注册新的服务主体应用程序,然后向 Power Platform 注册同一应用程序来完成。

注册管理员管理应用程序

首先,客户端应用程序需要在您的 Microsoft Entra 租户中注册。 要设置此设置,请查看 Power Platform API 的身份验证文章,因为 PowerShell 需要相同的应用程序设置。

在 Microsoft Entra ID 中注册了客户端应用程序之后,还需要向 Microsoft Power Platform 注册。 现在,无法通过 Power Platform 管理中心执行此操作;必须通过 Power Platform API 或 PowerShell 以编程方式为 Power Platform 管理员完成此操作。 服务主体无法自行注册—根据设计,必须通过管理员用户名和密码上下文来注册应用程序。 这样可以确保应用程序由担任租户管理员的人员创建。

若要注册新的管理应用程序,请使用以下脚本:

$appId = "CLIENT_ID_FROM_AZURE_APP"

# Login interactively with a tenant administrator for Power Platform
Add-PowerAppsAccount -Endpoint prod -TenantID $tenantId 

# Register a new application, this gives the SPN / client application same permissions as a tenant admin
New-PowerAppManagementApp -ApplicationId $appId

将请求作为服务主体

现在,已在 Microsoft Power Platform 中注册,您可以作为服务主体本身进行身份验证。 使用以下脚本查询您的环境列表:

$appId = "CLIENT_ID_FROM_AZURE_APP"
$secret = "SECRET_FROM_AZURE_APP"
$tenantId = "TENANT_ID_FROM_AZURE_APP"

Add-PowerAppsAccount -Endpoint prod -TenantID $tenantId -ApplicationId $appId -ClientSecret $secret -Verbose
Get-AdminPowerAppEnvironment

服务主体的限制

当前,服务主体身份验证可用于环境管理、租户设置和 Power Apps 管理。 在不需要许可证的情况下,支持与流相关的 Cmdlet 用于服务主体身份验证,因为无法将许可证分配给 Microsoft Entra ID 中的服务主体身份。

服务主体应用程序在 Power Platform 中的处理方式类似于分配有 Power Platform 管理员角色的普通用户。 不能分配细粒度角色和权限来限制其功能。 应用程序在 Microsoft Entra ID 中不会被分配任何特殊角色,因为这是平台服务处理服务主体提出的请求的方式。