このガイドでは、ローカル開発と CI/CD パイプラインの認証の構成について説明します。
ローカル開発の認証 (パスワード)
パスワード認証は、ローカル コンピューターで作業を開始する最も簡単な方法です。
.envファイルに次の変数を設定します。MS_AUTH_EMAIL=testuser@contoso.com MS_AUTH_CREDENTIAL_TYPE=password MS_USER_PASSWORD=<password>認証スクリプトを実行します。 ブラウザー ウィンドウが開きます。
npm run auth:headfulサインイン フローを完了します。 このプロセスでは、ストレージの状態が自動的に保存されます。
モデル駆動型アプリをテストする場合は、CRM ドメインに対して認証します。
npm run auth:mda:headful
証明書を使用して認証する (local-file)
証明書認証はパスワードよりも安全であり、ローカル開発と CI/CD の両方に適しています。
Microsoft Entra ID管理者から、テスト ユーザーの
.pfx証明書ファイルを取得します。cert/ディレクトリのリポジトリ ルートに証明書ファイルを配置します。.envファイルに次の変数を設定します。MS_AUTH_EMAIL=testuser@contoso.com MS_AUTH_CREDENTIAL_TYPE=certificate MS_AUTH_CREDENTIAL_PROVIDER=local-file MS_AUTH_LOCAL_FILE_PATH=../../cert/<cert-file>.pfx MS_AUTH_CERTIFICATE_PASSWORD=<optional-password>認証スクリプトを実行します。
npm run auth:headful # https://make.powerapps.com npm run auth:mda:headful # Model-driven app (if needed)
Azure Key Vaultで認証する
Azure Key Vaultを使用して、共有環境または運用環境で証明書を一元的に管理します。
証明書をAzure Key Vaultにアップロードします。
ボールトでパイプライン サービス プリンシパルにKey Vault Certificate Userのロールを付与してください。
.envまたはパイプライン シークレットに次の変数を設定します。MS_AUTH_EMAIL=testuser@contoso.com MS_AUTH_CREDENTIAL_TYPE=certificate MS_AUTH_CREDENTIAL_PROVIDER=azure-keyvault AZURE_KEYVAULT_URL=https://<vault-name>.vault.azure.net/ AZURE_CERTIFICATE_NAME=<certificate-name> AZURE_TENANT_ID=<tenant-id>
CI/CD 認証を構成する
CI/CD では、認証はテスト スイートの開始前に globalSetup で実行されます。 スクリプトは、構成された資格情報プロバイダーを使用して、新しいストレージ状態をヘッドレスで取得します。
GitHub Actionsの例
このワークフロー ステップは、Azure Key Vaultに格納されている証明書を使用してPower AppsドメインとDynamics 365 ドメインの両方に対して認証を行い、Playwright テスト スイートを実行します。
- name: Authenticate to Power Platform
env:
MS_AUTH_EMAIL: ${{ secrets.MS_AUTH_EMAIL }}
MS_AUTH_CREDENTIAL_TYPE: certificate
MS_AUTH_CREDENTIAL_PROVIDER: azure-keyvault
AZURE_KEYVAULT_URL: ${{ secrets.AZURE_KEYVAULT_URL }}
AZURE_CERTIFICATE_NAME: ${{ secrets.AZURE_CERTIFICATE_NAME }}
AZURE_TENANT_ID: ${{ secrets.AZURE_TENANT_ID }}
MODEL_DRIVEN_APP_URL: ${{ secrets.MODEL_DRIVEN_APP_URL }}
run: |
cd packages/e2e-tests
npm run auth
npm run auth:mda
- name: Run tests
run: |
cd packages/e2e-tests
npx playwright test
Azure Pipelinesの例
このパイプライン タスクは、Azure Key Vaultの証明書を使用してPower AppsドメインとDynamics 365 ドメインの両方に対して認証を行い、Playwright テスト スイートを実行します。
- task: Bash@3
displayName: Authenticate to Power Platform
env:
MS_AUTH_EMAIL: $(MS_AUTH_EMAIL)
MS_AUTH_CREDENTIAL_TYPE: certificate
MS_AUTH_CREDENTIAL_PROVIDER: azure-keyvault
AZURE_KEYVAULT_URL: $(AZURE_KEYVAULT_URL)
AZURE_CERTIFICATE_NAME: $(AZURE_CERTIFICATE_NAME)
AZURE_TENANT_ID: $(AZURE_TENANT_ID)
MODEL_DRIVEN_APP_URL: $(MODEL_DRIVEN_APP_URL)
script: |
cd packages/e2e-tests
npm run auth
npm run auth:mda
- task: Bash@3
displayName: Run Playwright tests
script: |
cd packages/e2e-tests
npx playwright test
認証を確認する
認証後、ストレージ状態ファイルが存在することを確認します。
ls packages/e2e-tests/.playwright-ms-auth/
# state-testuser@contoso.com.json
# state-mda-testuser@contoso.com.json
トークンの有効性を確認します。
import { ConfigHelper } from 'power-platform-playwright-toolkit';
const check = ConfigHelper.checkStorageStateExpiration(
'.playwright-ms-auth/state-testuser@contoso.com.json'
);
if (check.expired) {
console.log('Token expired, please re-authenticate');
} else {
const expiryDate = new Date(check.expiresOn! * 1000);
console.log(`Token valid until: ${expiryDate.toLocaleString()}`);
}
認証エラーをトラブルシューティングする
次の表に、一般的な認証の問題とその解決方法を示します。
| 症状: | 想定される原因 | Resolution |
|---|---|---|
Authentication tokens have expired |
ストレージ状態ファイルの有効期限が切れている | 再実行 npm run auth:headful |
Storage state file does not exist |
認証が実行されませんでした |
npm run auth:headful を実行します。 |
Certificate file not found |
MS_AUTH_LOCAL_FILE_PATH のパスが間違っています |
packages/e2e-tests/ に対してパスが相対的かどうかを確認する |
ERR_ABORTED モデル駆動型アプリの認証中 |
Power Apps 状態の有効期限が切れています |
npm run auth:headfulをnpm run auth:mda:headfulの前に実行する |
| ブラウザーが予期せず閉じる | 以前のブラウザー プロセスがまだ実行されている | 数秒待ってから再試行してください |
次のステップ
- CI/CD 統合 GitHub ActionsとAzure Pipelinesの完全なパイプライン構成
- キャンバス アプリをテストする
- モデル駆動型アプリをテストする