身份验证(预览)

本文概述了调用 Power Platform API(预览)的 Microsoft Entra 设置。 要通过 Power Platform API 访问可用资源,您必须从 Microsoft Entra 获取持有者令牌并将其作为标头与每个请求一起发送。 根据您支持的身份类型(用户与服务主体),获取此持有者令牌的流不同,如本文所述。

要获取具有正确权限的持有者令牌,需要执行以下步骤:

  1. 在您的 Microsoft Entra 租户中创建应用程序注册
  2. 配置 API 权限
  3. 配置公共客户端(可选)
  4. 配置证书和机密(可选)
  5. 请求访问令牌

步骤 1. 创建应用程序注册

导航到 Microsoft Entra 应用注册页面,创建一个新注册。 为应用程序命名,并确保选择了单租户选项。 您可以跳过重定向 URI 设置。

步骤 2. 配置 API 权限

在您的新应用注册中,导航到管理 - API 权限选项卡。在配置权限部分下,选择添加权限。 在打开的对话窗口中,选择我的组织使用的 API 选项卡,然后搜索 Power Platform API。 您可能会看到几个名称与此相似的条目,因此请确保将其与 GUID 8578e004-a5c6-46e7-913e-12f58912df43 一起使用。

如果您在按 GUID 搜索时未在列表中看到 Power Platform API,可能您仍然可以访问它,但可见性未刷新。 要强制刷新,请运行以下 PowerShell 脚本:

#Install the Microsoft Entra the module
Install-Module AzureAD

Connect-AzureAD
New-AzureADServicePrincipal -AppId 8578e004-a5c6-46e7-913e-12f58912df43 -DisplayName "Power Platform API"

从这里,您必须选择所需的权限。 这些权限按命名空间分组。 在命名空间中,您将看到资源类型和操作,例如,AppManagement.ApplicationPackages.Read,它将为应用程序包提供读取权限。 有关详细信息,请参阅我们的权限参考文章。

备注

Power Platform API 仅在此时使用委托的权限。 对于使用用户上下文运行的应用程序,您可以使用 scope 参数请求委托的权限。 这些权限将登录用户的特权委托给您的应用程序,允许它在调用 Power Platform API 终结点时充当用户。

对于服务主体身份,不使用应用程序权限。 服务主体现在被视为 Power Platform 管理员,必须按照 PowerShell - 创建服务主体进行注册。

将所需权限添加到应用程序后,选择授予管理员同意完成设置。 如果您希望允许用户立即访问您的应用,而不需要交互式同意体验,这是必需的。 如果您可以支持交互式同意,我们建议按照 Microsoft 身份平台和 OAuth 2.0 授权代码流执行。

步骤 3. 配置公共客户端(可选)

如果您的应用需要代表用户读取和写入资源,您必须启用公共客户端设置。 这是 Microsoft Entra ID 接受令牌请求正文中的用户名和密码属性的唯一方式。 另请注意,如果您计划使用此功能,它不适用于启用了多重身份验证的帐户。

要启用,请访问管理 - 身份验证选项卡。在高级设置部分下,将公共客户端切换设置为

步骤 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..."
}

在对带有授权 HTTP 标头的 Power Platform API 的后续调用中使用 access_token 值。

服务主体流

请务必阅读上面的“证书和机密”一节。 然后,通过 HTTP 向 Microsoft Entra ID 发送包含客户端密码有效负载的 POST 请求。 这通常称为服务主体身份验证。

重要提示

只有在您按照相关的 PowerShellREST 文档向 Microsoft Power Platform 注册了此客户端应用程序 ID 后,才能使用此方法。

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..."
}

在对带有授权 HTTP 标头的 Power Platform API 的后续调用中使用 access_token 值。 如上所述,服务主体流不使用应用程序权限,而是目前被视为他们进行的所有调用的 Power Platform 管理员。

另请参见

通过 API 创建服务主体应用程序(预览)
PowerShell - 创建服务主体