API de autenticación de JavaScript
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;
promptFullConsent?: boolean;
}
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.
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:
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 tres 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.
- promptFullConsent: solicita una ventana de consentimiento completa de las dependencias estáticas de la aplicación de cargas de trabajo.
additionalScopesToConsent
Si el front-end de carga de trabajo solicita un que un token se use para las llamadas al back-end de carga de trabajo, este parámetro debe ser NULL. El back-end de carga de trabajo puede no realizar OBO en el token recibido debido a un error de consentimiento que falta; en ese caso, el back-end de carga de trabajo deberá propagar el error al front-end de la carga de trabajo y proporcionar este parámetro.
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.
Para obtener más información sobre este additionalScopesToConsent y claimsForConditionalAccessPolicy y ver ejemplos de uso, consulte Guías de autenticación de cargas de trabajo y profundización.
promptFullConsent
Cuando se pasa como true, aparecerá un consentimiento completo de las dependencias estáticas para el usuario, independientemente de si proporcionó un consentimiento anteriormente o no. Un ejemplo de uso para este parámetro es agregar un botón a la experiencia de usuario donde el usuario puede usarlo para conceder el consentimiento total a la carga de trabajo.