Guide d’authentification

Ce guide vous guide tout au long de la configuration de l’authentification pour le développement local et les pipelines CI/CD.

S’authentifier pour le développement local (mot de passe)

L’authentification par mot de passe est le moyen le plus rapide de commencer sur un ordinateur local.

  1. Définissez les variables suivantes dans votre .env fichier :

    MS_AUTH_EMAIL=testuser@contoso.com
    MS_AUTH_CREDENTIAL_TYPE=password
    MS_USER_PASSWORD=<password>
    
  2. Exécutez le script d’authentification. Une fenêtre de navigateur s’ouvre :

    npm run auth:headful
    
  3. Procédez au flux de connexion. Le processus enregistre automatiquement l’état de stockage.

  4. Si vous testez des applications basées sur des modèles, authentifiez-vous auprès du domaine CRM :

    npm run auth:mda:headful
    

S’authentifier avec un certificat (fichier local)

L’authentification par certificat est plus sécurisée que les mots de passe et fonctionne bien pour le développement local et CI/CD.

  1. Obtenez un fichier de certificat .pfx pour votre utilisateur de test auprès de votre administrateur Microsoft Entra ID.

  2. Placez le fichier de certificat dans le cert/ répertoire à la racine du référentiel.

  3. Définissez les variables suivantes dans votre .env fichier :

    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. Exécutez les scripts d’authentification :

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

S’authentifier avec Azure Key Vault

Utilisez Azure Key Vault pour gérer les certificats de manière centralisée dans des environnements partagés ou de production.

  1. Chargez le certificat dans un Azure Key Vault.

  2. Accordez au principal de service de pipeline le rôle Utilisateur de certificat Key Vault sur le coffre.

  3. Définissez les variables suivantes dans vos .env ou les secrets du pipeline :

    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>
    

Configurer l’authentification CI/CD

Dans CI/CD, l’authentification s’exécute dans globalSetup avant le lancement de la suite de tests. Le script acquiert un nouvel état de stockage de manière automatisée en utilisant le fournisseur d'identifiants configuré.

exemple de GitHub Actions

Cette étape de flux de travail s’authentifie auprès des domaines Power Apps et Dynamics 365 à l’aide d’un certificat stocké dans Azure Key Vault, puis exécute la suite de tests 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

exemple de Azure Pipelines

Cette tâche de pipeline s’authentifie à la fois sur les domaines Power Apps et Dynamics 365 à l’aide d’un certificat de Azure Key Vault, puis exécute la suite de tests 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

Vérifier l’authentification

Après l’authentification, vérifiez que les fichiers d’état de stockage existent :

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

Vérifiez la validité du jeton :

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

Résoudre les échecs d’authentification

Le tableau suivant répertorie les problèmes d’authentification courants et explique comment les résoudre.

Symptôme Cause probable Résolution
Authentication tokens have expired Le fichier d’état de stockage a expiré Réexécuter npm run auth:headful
Storage state file does not exist Auth n’a jamais été exécutée Exécutez npm run auth:headful
Certificate file not found Chemin incorrect dans MS_AUTH_LOCAL_FILE_PATH Vérifiez que le chemin d’accès est relatif à packages/e2e-tests/
ERR_ABORTED pendant l’authentification de l’application pilotée par modèle Power Apps état expiré Exécuter npm run auth:headful avant npm run auth:mda:headful
Le navigateur se ferme de façon inattendue Processus de navigateur précédent en cours d’exécution Patientez quelques secondes et réessayez

Étapes suivantes

Voir également