Compartir vía


API de autenticación de Javascript (versión preliminar)

El front-end de Fabric ofrece una API de Javascript para cargas de trabajo de Fabric que permite adquirir un token para su aplicación en Microsoft Entra ID. En este artículo se describe esta API.

API

acquireAccessToken(params: AcquireAccessTokenParams): Promise<AccessToken>;  
export interface AcquireAccessTokenParams {
    additionalScopesToConsent?: string[];  
    claimsForConditionalAccessPolicy?: string;  
}

La API devuelve un objeto AccessToken que contiene el propio token y una fecha de expiración del token.

Para llamar a la API en el ejemplo de front-end, cree un elemento de muestra, desplácese hacia abajo y seleccione la página Ir a autenticación. Desde allí, puede seleccionar Obtener token de acceso para recibir un token.

Captura de pantalla en la que se muestra la sección de autenticación.

Consentimientos

Para comprender por qué se requieren los consentimientos, vaya a Consentimiento de usuario y administrador en Microsoft Entra ID.

Nota:

Los consentimientos son necesarios para que funcionen las operaciones CRUD y de trabajos y para adquirir tokens entre inquilinos.

¿Cómo funcionan los consentimientos en las cargas de trabajo de Fabric?

Para conceder un consentimiento para una aplicación específica, el FE de Fabric crea una instancia de MSAL configurada con el identificador de la aplicación de carga de trabajo y solicita un token para los ámbitos proporcionados (additionalScopesToConsent; consulte AcquireAccessTokenParams).

Al solicitar un token con la aplicación de carga de trabajo para un ámbito específico, Microsoft Entra ID muestra un consentimiento emergente en caso de que falte y, a continuación, redirige la ventana emergente al URI de redireccionamiento configurado en la aplicación.

Normalmente, el URI de redireccionamiento está en el mismo dominio que la página que solicitó el token, por lo que la página puede acceder al elemento emergente y cerrarlo.

En nuestro caso, no está en el mismo dominio, ya que Fabric solicita el token y el URI de redireccionamiento de la carga de trabajo no está en el dominio de Fabric. Por lo tanto, cuando se abra el cuadro de diálogo de consentimiento, habrá que cerrarlo manualmente después del redireccionamiento. No utilizamos el código devuelto en el redirectUri, por lo que lo cerramos automáticamente (cuando Microsoft Entra ID redirige el elemento emergente al URI de redireccionamiento, simplemente se cierra).

Puede ver el código o la configuración del URI de redireccionamiento en el archivo index.ts.

Este es un ejemplo de un elemento emergente de consentimiento para la aplicación "mi aplicación de carga de trabajo" y sus dependencias (almacenamiento y Power BI) que hemos configurado al repasar la configuración de autenticación:

Captura de pantalla del cuadro de diálogo de permisos necesarios.

Veremos cómo trabajar con consentimientos cuando hablemos de AcquireAccessTokenParams.

Otra manera de conceder consentimientos en el inquilino anfitrión (opcional)

Para obtener un consentimiento en el inquilino anfitrión de la aplicación, puede pedir al administrador de inquilinos que conceda un consentimiento para todo el inquilino con una dirección URL en el siguiente formato (inserte su propio id. de inquilino e id. de cliente):

https://login.microsoftonline.com/{tenantId}/adminconsent?client_id={clientId}

AcquireAccessTokenParams

Al llamar a la API de JS acquireAccessToken, podemos proporcionar dos parámetros:

  • additionalScopesToConsent: otros ámbitos para solicitar un consentimiento; por ejemplo, escenarios que requieren volver a dar el consentimiento.
  • claimsForConditionalAccessPolicy: notificaciones devueltas por Microsoft Entra ID cuando se produce un error en los flujos OBO, por ejemplo, OBO requiere autenticación multifactor.

Revisemos estos dos parámetros y veamos qué proporcionar al llamar a acquireAccessToken.

additionalScopesToConsent

Esto es lo que se debe proporcionar en additionalScopesToConsent al llamar a acquireAccessToken en los escenarios siguientes:

Escenario 1: Adquirir un token para llamar a la carga de trabajo de back-end: AdditionalScopesToConsent es null.

Cuando quiera adquirir un token para llamar a la carga de trabajo de back-end, llame a acquireAccessToken sin proporcionar ningún elemento adicionalScopesToConsent.

  • Si el usuario está en el inquilino anfitrión de la aplicación, la carga de trabajo puede adquirir un token sin conceder ningún consentimiento.

  • Si el usuario está en otro inquilino, debe conceder consentimiento (o pedirle al administrador del inquilino que conceda consentimiento a la aplicación) para que la carga de trabajo pueda recibir el token.

Escenario 2: Error en la API de JS de las operaciones CRUD o de trabajos: AdditionalScopesToConsent es el valor predeterminado.

Si se produce un error en estas operaciones, la carga de trabajo debe solicitar un token con ['.default'] como additionalScopesToConsent. Este desencadenador es un consentimiento para las dependencias de la aplicación (los permisos de la API configurados en nuestra aplicación). Consulte la configuración de autenticación para obtener más información.

Escenario 3. El flujo OBO de un ámbito específico produce un error de consentimiento necesario: AdditionalScopesToConsent es “https://analysis.windows.net/powerbi/api/Workspace.Read.All“

Captura de pantalla que muestra el error de OBO de consentimiento necesario.

Si se produce un error de consentimiento necesario en el flujo OBO del back-end de la carga de trabajo de un ámbito o ámbitos específico, el back-end de la carga de trabajo debe informar al front-end para llamar a la API acquireAccessToken con ese ámbito o ámbitos.

claimsForConditionalAccessPolicy

Este parámetro se usa cuando se encuentran errores de OBO en el BE de la carga de trabajo debido a alguna directiva de acceso condicional configurada en el inquilino.

Los errores de OBO causados por directivas de acceso condicional devuelven una cadena llamada “reclamaciones”.Esta cadena debe enviarse al FE de la carga de trabajo, donde el FE debe solicitar un token y pasar la notificación como claimsForConditionalAccessPolicy. Para obtener más información, consulte Control de la autenticación multifactor (MFA), el acceso condicional y el consentimiento incremental.

Consulte el uso de AddBearerClaimToResponse de AuthenticationService en el BE de muestra para ver ejemplos de respuestas cuando se produce un error en las operaciones de OBO debido a la falta de consentimiento o a las directivas de acceso condicional.