Freigeben über


Authentifizierungsleitfaden

Dieser Leitfaden führt Sie durch die Konfiguration der Authentifizierung für lokale Entwicklungs- und CI/CD-Pipelines.

Authentifizieren für lokale Entwicklung (Kennwort)

Die Kennwortauthentifizierung ist die schnellste Methode, um auf einem lokalen Computer zu beginnen.

  1. Legen Sie die folgenden Variablen in Ihrer .env Datei fest:

    MS_AUTH_EMAIL=testuser@contoso.com
    MS_AUTH_CREDENTIAL_TYPE=password
    MS_USER_PASSWORD=<password>
    
  2. Führen Sie das Authentifizierungsskript aus. Ein Browserfenster wird geöffnet:

    npm run auth:headful
    
  3. Schließen Sie den Anmeldeablauf ab. Der Prozess speichert den Speicherstatus automatisch.

  4. Wenn Sie modellgesteuerte Apps testen, authentifizieren Sie sich bei der CRM-Domäne:

    npm run auth:mda:headful
    

Authentifizieren mit einem Zertifikat (local-file)

Die Zertifikatauthentifizierung ist sicherer als Kennwörter und eignet sich gut für lokale Entwicklung und CI/CD.

  1. Rufen Sie eine .pfx Zertifikatdatei für den Testbenutzer von Ihrem Microsoft Entra ID Administrator ab.

  2. Platzieren Sie die Zertifikatsdatei im cert/-Verzeichnis im Repository-Stammverzeichnis.

  3. Legen Sie die folgenden Variablen in Ihrer .env Datei fest:

    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>
    
  4. Führen Sie die Authentifizierungsskripts aus:

    npm run auth:headful       # https://make.powerapps.com
    npm run auth:mda:headful   # Model-driven app (if needed)
    

Authentifizieren mit Azure Key Vault

Verwenden Sie Azure Key Vault, um Zertifikate zentral in freigegebenen oder Produktionsumgebungen zu verwalten.

  1. Laden Sie das Zertifikat in eine Azure Key Vault hoch.

  2. Gewähren Sie dem Dienstprinzipal der Pipeline die Rolle Key Vault Certificate User im Vault.

  3. Legen Sie die folgenden Variablen in Ihren .env- oder Pipeline-Geheimnissen fest:

    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>
    

Konfigurieren der CI/CD-Authentifizierung

In CI/CD wird die Authentifizierung in globalSetup ausgeführt, bevor die Testsuite startet. Das Skript erwirbt den aktuellen Speicherstatus kopflos unter Verwendung des konfigurierten Anmeldeinformationsanbieters.

beispiel für GitHub Actions

Dieser Workflowschritt authentifiziert sich sowohl für die Power Apps- als auch für Dynamics 365 Domänen mit einem zertifikat, das in Azure Key Vault gespeichert ist, und führt dann die Playwright-Testsuite aus.

- 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

Beispiel für Azure Pipelines

Diese Pipelineaufgabe authentifiziert sich sowohl für die Power Apps- als auch für Dynamics 365 Domänen, die ein Zertifikat von Azure Key Vault verwenden, und führt dann die Playwright-Testsuite aus.

- 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

Überprüfen der Authentifizierung

Überprüfen Sie nach der Authentifizierung, ob die Speicherstatusdateien vorhanden sind:

ls packages/e2e-tests/.playwright-ms-auth/
# state-testuser@contoso.com.json
# state-mda-testuser@contoso.com.json

Gültigkeit des Tokens überprüfen:

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()}`);
}

Fehleranalyse bei Authentifizierungsproblemen

In der folgenden Tabelle sind allgemeine Authentifizierungsprobleme und deren Behebung aufgeführt.

Symptom Wahrscheinliche Ursache Resolution
Authentication tokens have expired Speicherstatusdatei abgelaufen Erneute Ausführung npm run auth:headful
Storage state file does not exist Auth wurde nie ausgeführt Führen Sie npm run auth:headful aus.
Certificate file not found Falscher Pfad in MS_AUTH_LOCAL_FILE_PATH Überprüfen Sie, ob der Pfad relativ zu packages/e2e-tests/ ist.
ERR_ABORTED während der modellgesteuerten App-Authentifizierung Power Apps Status abgelaufen Ausführen npm run auth:headful vor npm run auth:mda:headful
Der Browser wird unerwartet geschlossen. Vorheriger Browserprozess wird noch ausgeführt Warten Sie einige Sekunden, und wiederholen Sie den Vorgang.

Nächste Schritte

Siehe auch