Power Apps テスト エンジンの認証ガイド (非推奨)

注意

テスト エンジンは非推奨 となり、今後のリリースで削除される予定です。 Power Platform および Dynamics 365 サービスのテスト自動化機能には、Power Platform Playwright サンプルを使用します。

このガイドでは、Test Engine で認証を設定するための詳細な手順について説明します。 認証オプションの概要については、Test Engine での認証を参照してください。

認証を開始する

Test Engine では、キャンバス アプリケーションとモデル駆動型アプリケーションの Web ベース テストで、次の 2 つの認証方法がサポートされています。

  • StorageState - 個別開発のための既定、簡単なセットアップ (Web ベースのキャンバスとモデル駆動型アプリのテスト用)
  • Dataverse - テストユーザーと CI/CD を共有するチームベースのアプローチ (Web ベースのキャンバスアプリとモデル駆動型アプリテスト用)

PowerFx プロバイダーと直接 Dataverse テストでは、認証の処理が異なります。 これらのテストでは、az コマンドを使用して、ログインしたAzure CLI セッションから直接アクセス トークンを取得し、リソース アクセス トークンを取得します。 この種のテストを実行する前に、az login --allow-no-subscriptions でサインインしていることを確認してください。

簡易セットアップ: StorageState 認証

StorageState 認証は、最も簡単な開始方法です。 Windows Data Protection 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. プロンプトが表示されたら、「サインインを維持する」を選択します

これで認証が保存されました。

  • Test Engine では、認証が安全に保存されます
  • 以降のテスト実行では、サインインを必要とせずに保存された状態が使用されます
  • トークンは必要に応じて自動的に更新されます

チームの設定: Dataverse 認証

Dataverse 認証は、チームと CI/CD パイプラインに最適です。 認証されたユーザーの状態は、X.509 証明書で暗号化された Dataverse に安全に格納されます。

手順 1: Test Engine ソリューションをダウンロードしてインポートする

  1. https://aka.ms/TestEngineAuth から Power Platform ソリューションをダウンロードします。
  2. Power Apps にサインインします。
  3. ターゲット環境を選択します。
  4. ソリューションに移動し、ソリューションのインポートを選択します。
  5. ウィザードに従って、Test Engine ソリューションをアップロードしてインストールします。

手順 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: Microsoft Entra IDでアプリケーション登録を作成する

Microsoft Entra IDでアプリケーション登録を作成するには、次の手順を実行します。

  1. Microsoft Entra 管理センター にサインインします。
  2. Applicationsアプリ登録 に移動します
  3. 新規登録を選択します
  4. 名前を入力します (例: "Test Engine Automation")
  5. 既定のオプションをそのままにして、登録を選択します
  6. 作成後、アプリケーション (クライアント) IDディレクトリ (テナント) ID を記録します

ステップ 2: Dataverse の API アクセス許可の構成

Dataverse の API アクセス許可を構成するには、以下の手順を実行します。

  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. 適切な事業単位とセキュリティ ロール を割り当てます (「Test Engine ユーザー」 ロール を含む)
  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の場合は、適切なアクセス許可を持つ Variable Groups に安全に格納します。

PowerFx と Dataverse の直接テスト認証

PowerFx プロバイダー テストとダイレクト Dataverse テストの場合、認証の仕組みはウェブベースの試験とは異なります。

PowerFx/Dataverse 認証の仕組み

  1. テスト エンジンはAzure CLIを使用してリソース固有のアクセス トークンを取得します
  2. トークンは、 Dataverse API で直接認証するために使用されます
  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"
    

認証のトラブルシューティング

このセクションでは、Test Engine での認証のトラブルシューティングについて説明します。

StorageState に関する一般的な問題

  • 問題: 実行のたびに認証プロンプトが表示さます。

    • 解決策: ログイン時にサインイン状態を維持するを選択していることを確認してください。
  • 問題: Cannot access secure storage エラー。

    • 解決策: ユーザー プロファイル フォルダへの適切なアクセス権があることを確認します。

Dataverse 認証の一般的な問題

  • 問題: Certificate not found エラー。

    • 解決方法 : 証明書の名前が証明書ストアの内容と完全に一致していることを確認します。
  • 問題: Unable to connect to Dataverse エラー。

    • Solution: Azure CLIが az login --allow-no-subscriptions でログインしていることを確認します。
  • 問題: サービス プリンシパルの Access denied エラー。

    • 解決策: アプリに Dataverse で適切なアクセス許可があり、適切なセキュリティ ロールがあることを確認します。

PowerFx/Dataverse 認証の一般的な問題

  • 問題: Unable to obtain access token エラー

    • Solution: az account get-access-token を使用してAzure CLIでサインインしていることを確認します
  • 問題: Dataverse における Access denied

    • 解決策: ログインしているユーザーが Dataverse 環境で適切なアクセス許可を持っていることを確認します
  • 問題: 長時間のテスト実行中のトークンの有効期限

    • 解決策: トークンの有効期限が長いサービス プリンシパルを使用するか、テスト 手順で再認証を処理します

認証セキュリティ アーキテクチャ
キャンバス アプリケーションのテスト
モデル駆動型アプリケーションのテスト
Dataverse 拡張機能のテスト