Guía de autenticación

Esta guía le acompaña en la configuración de la autenticación para desarrollo local y canalizaciones de CI/CD.

Autenticación para el desarrollo local (contraseña)

La autenticación de contraseñas es la manera más rápida de empezar a trabajar en un equipo local.

  1. Establezca las siguientes variables en el .env archivo:

    MS_AUTH_EMAIL=testuser@contoso.com
    MS_AUTH_CREDENTIAL_TYPE=password
    MS_USER_PASSWORD=<password>
    
  2. Ejecute el script de autenticación. Se abre una ventana del explorador:

    npm run auth:headful
    
  3. Complete el flujo de login. El proceso guarda automáticamente el estado de almacenamiento.

  4. Si está probando aplicaciones controladas por modelos, autentíquese en el dominio crm:

    npm run auth:mda:headful
    

Autenticación con un certificado (archivo local)

La autenticación de certificados es más segura que las contraseñas y funciona bien tanto para el desarrollo local como para CI/CD.

  1. Obtenga un archivo de certificado de .pfx del administrador de Microsoft Entra ID para su usuario de prueba.

  2. Coloque el archivo de certificado en el cert/ directorio en la raíz del repositorio.

  3. Establezca las siguientes variables en el .env archivo:

    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. Ejecute los scripts de autenticación:

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

Autenticación con Azure Key Vault

Use Azure Key Vault para administrar certificados de forma centralizada en entornos compartidos o de producción.

  1. Cargue el certificado en un Azure Key Vault.

  2. Conceda al principal de servicio de la canalización el rol Usuario de certificados del Key Vault en el almacén de claves.

  3. Establezca las siguientes variables en sus secretos de .env o canalización:

    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>
    

Configuración de la autenticación de CI/CD

En CI/CD, la autenticación se ejecuta antes globalSetup de que se inicie el conjunto de pruebas. El script adquiere el estado de almacenamiento nuevo de forma sin problemas mediante el proveedor de credenciales configurado.

ejemplo de Acciones de GitHub

Este paso de flujo de trabajo se autentica en los dominios de Power Apps y Dynamics 365 mediante un certificado almacenado en Azure Key Vault y, a continuación, ejecuta la suite de pruebas de 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

ejemplo de Azure Pipelines

Esta tarea de canalización se autentica en los dominios de Power Apps y Dynamics 365, mediante un certificado de Azure Key Vault y, a continuación, ejecuta el conjunto de pruebas 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

Comprobación de la autenticación

Después de la autenticación, compruebe que existen los archivos de estado de almacenamiento:

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

Comprobar la validez del token:

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

Solución de errores de autenticación

En la tabla siguiente se enumeran los problemas comunes de autenticación y cómo resolverlos.

Síntoma Causa probable Resolution
Authentication tokens have expired El archivo de estado de almacenamiento ha expirado Volver a ejecutar npm run auth:headful
Storage state file does not exist La autenticación nunca se ejecutó Ejecute npm run auth:headful:
Certificate file not found Ruta de acceso incorrecta en MS_AUTH_LOCAL_FILE_PATH Comprueba que la ruta de acceso sea relativa a packages/e2e-tests/
ERR_ABORTED durante la autenticación de aplicaciones controladas por modelos Power Apps estado expirado Ejecutar npm run auth:headful antes npm run auth:mda:headful
El explorador se cierra inesperadamente Proceso del navegador anterior todavía en ejecución Espere unos segundos y vuelva a intentarlo

Pasos siguientes

Consulte también