测试引擎身份验证 Power Apps 指南(预览版)

备注

预览功能不适合生产使用且功能可能受限。 这些功能在正式发布之前已经可用,以便客户可以抢先体验并提供反馈。

本指南提供了在测试引擎中设置身份验证的分步说明。 有关身份验证选项的快速概述,请参阅 测试引擎中的身份验证

身份验证入门

测试引擎支持两种基于 Web 的画布测试和模型驱动应用程序的身份验证方法:

  • StorageState - 用于单个开发的默认、轻松设置(用于基于 Web 的画布和模型驱动应用测试)
  • Dataverse - 用于共享测试用户和 CI/CD 的基于团队的方法(用于基于 Web 的画布和模型驱动应用测试)

PowerFx 提供程序和直接 Dataverse 测试的身份验证处理方式不同。 这些测试使用命令直接从登录的 Azure CLI 会话获取访问令牌,以 az 获取资源访问令牌。 在运行这些类型的测试之前,请确保您已登录。 az login --allow-no-subscriptions

快速设置:StorageState 身份验证

StorageState 身份验证是最简单的入门方法。 它使用 Windows 数据保护 API 在本地计算机上安全地存储身份验证令牌。

步骤 1:使用默认身份验证运行测试

运行以下 PowerShell 命令,将开头的参数替换为。 your

pac test run `
   --provider canvas `
   --test-plan-file your-test-plan.yaml `
   --tenant your-tenant-id `
   --environment-id your-environment-id

备注

此示例中未使用 pac test run--user-auth 参数,因为默认提供程序是。 StorageState 如果您愿意,您可以将其包含在内。

步骤 2:完成交互式登录

输入测试用户帐户凭据

  1. 浏览器窗口自动打开
  2. 使用您的测试用户帐户登录
  3. 如果出现提示,请批准 MFA 和同意提示
  4. 出现提示时选择“保持登录状态”

您的身份验证现已保存。

  • 测试引擎安全地存储您的身份验证
  • 将来的测试运行使用保存的状态,无需登录
  • 令牌在需要时自动刷新

团队设置: Dataverse 身份验证

Dataverse 身份验证非常适合团队和 CI/CD 管道。 它安全地存储经过身份验证的用户 Dataverse状态,并使用 X.509 证书进行加密。

步骤 1:下载并导入测试引擎解决方案

  1. 从以下位置 Power Platform 下载 https://aka.ms/TestEngineAuth解决方案。
  2. 登录到 Power Apps
  3. 选择目标环境。
  4. 转到 解决方案并选择 导入解决方案
  5. 按照向导上传并安装测试引擎解决方案。

步骤 2:创建用于加密的证书

对于自签名证书(仅限开发),请运行以下 PowerShell 脚本:

$Params = @{
  DnsName = @("testengine", "testengine")
  CertStoreLocation = "Cert:\CurrentUser\My"
  NotAfter = (Get-Date).AddMonths(6)
  KeyAlgorithm = "RSA"
  KeyLength = 2048
}
New-SelfSignedCertificate @Params

对于生产,请使用企业证书颁发机构提供的证书。

第 3 步:设置测试用户

完成以下步骤以设置测试用户:

  1. 打开终端并注销任何现有会话:

    # Clear Power Platform CLI credentials
    pac auth clear
    
    # Clear Azure CLI credentials
    az logout
    
  2. 使用 Azure CLI 登录(身份验证所需 Dataverse ):

    az login --allow-no-subscriptions
    
  3. 将证书名称 设置为名为 PowerShell 的环境变量 DataProtectionCertificateName

    $env:DataProtectionCertificateName = "CN=testengine"
    
  4. 使用身份验证运行 Dataverse 测试:

    pac test run `
       --provider canvas `
       --user-auth Dataverse `
       --auth Certstore `
       --test-plan-file testplan.yaml `
       --tenant your-tenant-id `
       --environment-id your-environment-id
    

    备注

    与 StorageState 不同,在这种情况下,您必须使用 --user-auth 值为的 Dataverse参数。

  5. 出现提示时完成交互式登录。

设置服务主体(适用于 CI/CD)

对于 CI/CD 管道中的自动化测试,可以使用服务主体而不是交互式用户帐户。

第 1 步:在 ID 中 Microsoft Entra 创建应用程序注册

完成以下步骤,在 ID 中 Microsoft Entra 创建应用程序注册。

  1. 登录到 Microsoft Entra 管理中心
  2. 导航到 应用程序应用程序注册>
  3. 选择“新建注册”
  4. 输入名称(例如“测试引擎自动化”)
  5. 保留默认选项并选择 “注册”
  6. 创建后,记下 应用程序(客户端)ID目录(租户)ID

步骤 2:配置 API 权限 Dataverse

完成以下步骤以配置 API 权限 Dataverse。

  1. 在应用程序注册中,转到 API 权限
  2. 选择添加权限
  3. 选择 我的组织使用的 API
  4. 搜索并选择 Dataverse
  5. 选择“委派权限”
  6. 检查 user_impersonation
  7. 选择“添加权限”
  8. 选择 “授予管理员同意”

步骤 3:创建客户端密码

完成以下步骤以创建客户端密码。

  1. 转到 证书和机密
  2. 选择 “新建客户端密码”
  3. 添加描述并选择到期时间
  4. 立即复制机密 (无法再次看到它)

步骤 4:将应用程序用户添加到 Dataverse

完成以下步骤以将应用程序用户添加到。 Dataverse

  1. 打开 Power Platform 管理中心
  2. 选择环境
  3. 转到“设置” 用户 + 权限>应用程序>用户
  4. 选择 + 新 应用用户
  5. 搜索并选择您的应用程序
  6. 分配适当的业务部门和安全角色(包括“测试引擎用户”角色)
  7. 保存更改

步骤 5:配置 CI/CD 管道

将以下变量添加到管道中:

AZURE_CLIENT_ID: (your application ID)
AZURE_CLIENT_SECRET: (your client secret)
AZURE_TENANT_ID: (your tenant ID)
DataProtectionCertificateValue: (base64 encoded certificate)
ENVIRONMENT_URL: (your Dataverse environment URL)

对于 Azure DevOps,将它们安全地存储在具有适当权限的变量组

PowerFx 和直接 Dataverse 测试身份验证

对于 PowerFx 提供程序测试和直接 Dataverse 测试,身份验证的工作方式与基于 Web 的测试不同。

PowerFx/Dataverse 身份验证的工作原理

  1. 测试引擎使用 Azure CLI 获取特定于资源的访问令牌
  2. 令牌用于直接使用 API 进行 Dataverse 身份验证
  3. 不涉及浏览器或基于 Web 的身份验证

设置 PowerFx/Dataverse 身份验证

  1. 确保已安装 Azure CLI 并且是最新的:

    winget install -e --id Microsoft.AzureCLI
    # Or update it if already installed
    az upgrade
    
  2. 使用 Azure CLI 登录:

    # The --allow-no-subscriptions flag is important as you may not have Azure subscriptions
    az login --allow-no-subscriptions
    
  3. 使用 PowerFx 提供程序运行测试:

    pac test run `
       --provider powerfx `
       --test-plan-file testplan.yaml `
       --tenant your-tenant-id `
       --environment-id your-environment-id `
       --domain "https://your-environment.crm.dynamics.com"
    

身份验证故障排除

本节包含有关使用测试引擎进行身份验证故障排除的信息。

StorageState 的常见问题

  • 问题:每次运行时都会出现身份验证提示。

    • 解决方案:检查您是否选择了 登录期间保持登录 状态。
  • 问题Cannot access secure storage 错误。

    • 解决方案:确保您对用户配置文件文件夹具有适当的访问权限。

身份验证的 Dataverse 常见问题

  • 问题Certificate not found 错误。

    • 解决方案:验证证书名称是否与证书存储中的名称完全匹配。
  • 问题Unable to connect to Dataverse 错误。

    • 解决方案:检查 Azure CLI 是否登录时使用。 az login --allow-no-subscriptions
  • 问题Access denied 服务主体出错。

    • 解决方案:验证应用在正确的权限和适当的安全角色中 Dataverse 。

PowerFx/Dataverse 身份验证的常见问题

  • 问题Unable to obtain access token 错误

    • 解决方案:使用 Azure CLI 验证是否登录 az account get-access-token
  • 问题Access denied 到 Dataverse

    • 解决方案:确保登录用户在 Dataverse 环境中具有适当的权限
  • 问题:长时间测试运行期间令牌过期

    • 解决方案:使用令牌过期时间较长的服务主体,或在测试步骤中处理重新身份验证

身份验证安全架构
测试画布应用程序
测试模型驱动应用程序
测试 Dataverse 扩展