Introducción a la autenticación (versión preliminar)
Las cargas de trabajo de Fabric dependen de la integración con Microsoft Entra ID para llevar a cabo la autenticación y autorización.
Todas las interacciones entre las cargas de trabajo y otros componentes de Fabric o Azure deben ir acompañadas de una adecuada compatibilidad de la autenticación de las solicitudes recibidas o enviadas. Los tokens enviados deben generarse correctamente y los tokens recibidos también se deben validar correctamente.
Se recomienda familiarizarse con la Plataforma de identidad de Microsoft antes de empezar a trabajar con las cargas de trabajo de Fabric. También se recomienda repasar las Recomendaciones y procedimientos recomendados de la Plataforma de identidad de Microsoft.
Flujos
Desde el front-end al back-end de la carga de trabajo
Cualquier API de plano de datos es un ejemplo de esta comunicación. Esta comunicación se realiza con un token de firmante (token delegado).
Para obtener información sobre cómo adquirir un token en el FE de la carga de trabajo, lea API de autenticación. Además, asegúrese de revisar la validación de tokens en la Introducción a la autenticación y autorización de back-end.
Desde back-end de Fabric al back-end de carga de trabajo
La creación de un elemento de la carga de trabajo es un ejemplo de esta comunicación. Esta comunicación se realiza con un token SubjectAndApp, que es un token especial que incluye un token de aplicación y un token de firmante combinados (consulte Introducción a la autenticación y autorización de back-end para obtener más información sobre este token).
Para que esta comunicación funcione, el usuario que usa esta comunicación debe dar su consentimiento a la aplicación de Entra.
Desde back-end de la carga de trabajo al back-end de Fabric
Se lleva a cabo con el token SubjectAndApp para las API de control de la carga de trabajo (por ejemplo, ResolveItemPermissions) o con un token de firmante (para otras API de Fabric).
Del back-end de la carga de trabajo a servicios externos
La escritura en un archivo de Lakehouse es un ejemplo de esta comunicación. Se lleva a cabo con el token de firmante o un token de aplicación, en función de la API.
Si planea comunicarse con servicios mediante un token de firmante, asegúrese de haberse familiarizado con los flujos con derechos delegados.
Consulte el Tutorial de autenticación para configurar el entorno de forma que funcione con la autenticación.
Cómo trabajar con tokens
El front-end debe solicitar un token workloadClient.auth.acquireAccessToken({});
. Puede usar este token para autenticarse con el back-end.
Si desea acceder a algún recurso, envíe el token al back-end e intente intercambiarlo mediante un flujo OBO para ese recurso. También puede usar el token recibido de las API de control (CRUD o trabajos) e intentar intercambiarlo para ese recurso.
Si se produce un error en el intercambio por motivos de consentimiento, notifique al front-end y llame a workloadClient.auth.acquireAccessToken({additionalScopesToConsent:[resource]});
e inténtelo de nuevo.
Si se produce un error en el intercambio por motivos de MFA, notifique al front-end junto con la notificación recibida al intentar el intercambio y llame a workloadClient.auth.acquireAccessToken({claimsForConditionalAccessPolicy:claims});
.
Para obtener ejemplos, consulte: Ejemplo de respuesta de error.
Nota:
El token que recibe al adquirir un token en el front-end no está relacionado con additionalScopesToConsent que pase. Esto significa que una vez que el usuario da su consentimiento, puede usar cualquier token que haya recibido de workloadClient.auth.acquireAccessToken
para el flujo OBO.
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. Antes de trabajar con la API de autenticación de JavaScript, asegúrese de repasar la documentación sobre la autenticación de la API de JavaScript.
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 ejemplo y desplácese hacia abajo y seleccione Ir a la página Autenticación, desde allí puede seleccionar Obtener token de acceso y recibirá un token de vuelta.
Consentimientos
Para comprender por qué se requieren los consentimientos, consulte 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, 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 el ámbito proporcionado (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 redirección de la carga de trabajo no está en el dominio de Fabric, por lo que, cuando se abre el cuadro de diálogo de consentimiento, debe cerrarse manualmente después de la redirección; no se usa el código devuelto en el redirectUri y, por lo tanto, solo se cierra automáticamente (cuando Microsoft Entra ID redirige el elemento emergente al URI de redirección, se cierra).
Puede ver el código o la configuración del URI de redireccionamiento en el archivo index.ts. Este archivo se puede encontrar en Microsoft-Fabric-workload-development-sample, en la carpeta front-end.
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:
Veremos cómo trabajar con consentimientos cuando hablemos de AcquireAccessTokenParams.
Otra manera de conceder consentimientos en el inquilino anfitrión (opcional)
Consulte la documentación de la API de JavaScript para obtener más información sobre cómo conceder consentimientos en el inquilino principal de la aplicación mediante la siguiente dirección URL (inserte el identificador de inquilino y el identificador de cliente):
https://login.microsoftonline.com/{tenantId}/adminconsent?client_id={clientId}