Compartir vía


Información general sobre autenticación y autorización de back-end (versión preliminar)

La carga de trabajo de muestra para desarrolladores de Fabric tiene los siguientes flujos de autenticación en el back-end.

Autenticación y autorización de solicitudes de Fabric para la carga de trabajo

Estructura del encabezado de autorización

El encabezado de autorización usa un formato de token específico:

SubjectAndAppToken1.0 subjectToken="delegated token", appToken="S2S token"

Este formato incluye dos tokens distintos:

  • subjectToken: se trata de un token delegado que representa al usuario en cuyo nombre se realiza la operación.
  • appToken: se trata de un token específico de la aplicación Fabric.

La lógica detrás del uso de un encabezado de doble token es triple:

  • Validación: la carga de trabajo puede verificar que la solicitud se originó en Fabric mediante la validación de appToken.

  • Contexto de usuario: subjectToken proporciona un contexto de usuario para la acción que se realiza.

  • Comunicación entre servicios: la carga de trabajo puede adquirir un token delegado (OBO) mediante subjectToken, lo que le permite llamar a otros servicios con un token de usuario.

Autenticación

Las principales comprobaciones de autenticación que se realizan para SubjectAndAppToken son:

  • Validación y análisis del valor del encabezado de autorización: se realiza en el método FetchSubjectAndAppTokenTokenFromHeader. El token debe comenzar por el prefijo "SubjectAndAppToken1.0" e incluir dos tokens: subjectToken y appToken.

  • Validación de las propiedades del token de Entra: tanto subjectToken como appToken se validan para comprobar las propiedades comunes del token de Microsoft Entra en el método ValidateAadTokenCommon. Estas propiedades incluyen la firma del token, la duración del token, el público del token (público de la aplicación de carga de trabajo), la versión del token (1.0) y el emisor.

  • Validación de las propiedades appToken: appToken no debe tener ninguna notificación de scp, pero sí una notificación de idtyp con aplicación como valor. También se comprueba esa notificación de tid en el id. de inquilino del publicador de la carga de trabajo.

    Notificaciones de appToken de muestra:

    {
    "aud": "api://localdevinstance/12345678-77f3-4fcc-bdaa-487b920cb7ee/Fabric.WorkloadSample/123",
    "iss": "https://sts.windows.net/12345678-77f3-4fcc-bdaa-487b920cb7ee/",
    "iat": 1700047232,
    "nbf": 1700047232,
    "exp": 1700133932,
    "aio": "E2VgYLjBuv2l+c6cmm/iP/bnL2v+AQA=",
    "appid": "00000009-0000-0000-c000-000000000000",
    "appidacr": "2",
    "idp": "https://sts.windows.net/12345678-77f3-4fcc-bdaa-487b920cb7ee/",
    "idtyp": "app",
    "oid": "87654321-727a-403d-b7d4-8e4a48865158",
    "rh": "0.ACgAGX-u-vN3zE-9qkh7kgy37hQbaU7-v2xFr59O_foS7VLZAAA.",
    "sub": "87654321-727a-403d-b7d4-8e4a48865158",
    "tid": "12345678-77f3-4fcc-bdaa-487b920cb7ee",
    "uti": "5bgMXs3uMUSAHCruRjACAA",
    "ver": "1.0"
    }
    
  • Validación de las propiedades subjectToken: asegúrese de que subjectToken incluye una notificación de scp con el ámbito FabricWorkloadControl, de que no haya ninguna notificación de idtyp presente en el token y de que tiene el mismo appid que en appToken.

    Notificaciones de subjectToken de muestra:

    {
    "aud": "api://localdevinstance/12345678-77f3-4fcc-bdaa-487b920cb7ee/Fabric.WorkloadSample/123",
    "iss": "https://sts.windows.net/12345678-77f3-4fcc-bdaa-487b920cb7ee/",
    "iat": 1700050446,
    "nbf": 1700050446,
    "exp": 1700054558,
    "acr": "1",
    "aio": "ATQAy/8VAAAAUgWRMRnBo4VGHvrKRykUXOXBNKS1cHnBxLrYkZJJGSjAVyJGBecbLdSud1GUakER",
    "amr": [
        "pwd"
    ],
    "appid": "00000009-0000-0000-c000-000000000000",
    "appidacr": "2",
    "ipaddr": "46.117.19.50",
    "name": "john doe",
    "oid": "abacabac-f91e-41db-b997-699f17146275",
    "rh": "0.ASgAGX-u-vN3zE-9qkh7kgy37hQbaU7-v2xFr59O_foS7VLZANQ.",
    "scp": "FabricWorkloadControl",
    "sub": "X0Wl85UA-uOmdkQz5MoT-hEgYZXDq9FYdS8g2bFUaZA",
    "tid": "12345678-77f3-4fcc-bdaa-487b920cb7ee",
    "unique_name": "user1@constso.com",
    "upn": "user1@constso.com",
    "uti": "_llZwmJoSUiHv-kw6tfDAA",
    "ver": "1.0"
    }
    

Consulte IAuthenticationService.

Nota:

Todas las validaciones del código de ejemplo son para tokens de la versión 1.0.

Authorization

Una vez que se ha confirmado que la solicitud se origina en el servicio de Fabric (a través de appToken), se entiende que Fabric ya ha verificado que el usuario tiene los permisos necesarios para realizar la acción, en función de los metadatos de permisos de Fabric.

Autenticación y autorización de solicitudes de carga de trabajo de Fabric

Solicitudes de control de la carga de trabajo

Las API de control de la carga de trabajo son API especiales de Fabric que admiten cargas de trabajo con administración del ciclo de vida de los elementos de Fabric. Estas API usan el mismo formato de encabezado de autorización SubjectAndAppToken1.0.

SubjectAndAppToken1.0 subjectToken="delegated token", appToken="S2S token"

Al provenir de la carga de trabajo, los tokens incluidos son:

  • subjectToken: se trata de un token delegado por el usuario (obtenido a través del flujo OBO) que representa al usuario en cuyo nombre se realiza la operación. Fabric verifica que el usuario tenga los permisos exigidos para realizar la acción necesaria.

  • appToken: se trata de un token específico de la aplicación de carga de trabajo. Fabric comprueba que este token de la aplicación de Entra de la carga de trabajo a la que pertenece el elemento de Fabric correspondiente y que se encuentra en el inquilino del publicador de la carga de trabajo.

Consulte el método ValidatePermissions en AuthorizationHandler.

API públicas

Para llamar a las API públicas de Fabric, la carga de trabajo debe adquirir un token OBO estándar de Microsoft Entra con los ámbitos de API pertinentes y pasarlo como token de portador en el encabezado de autorización de la solicitud.

Consulte FabricExtensionController.

Autenticación y autorización de solicitudes del FE al BE de la carga de trabajo

Encabezado de autorización

El encabezado de autorización de una solicitud enviada desde el FE al BE de la carga de trabajo usa un token de portador estándar.

Autenticación

El método ValidateDelegatedAADToken del BE de la carga de trabajo es el responsable de validar el token. Estas son las principales comprobaciones que se realizan:

  • Duración del token: garantiza que el token está dentro de su período de utilización válido.

  • Firma: verifica la autenticidad del token.

  • Público: comprueba que el público del token coincide con la aplicación de Entra de la carga de trabajo.

  • Elimsor: valida el emisor del token.

  • Ámbitos permitidos: valida los ámbitos a los que el token tiene permitido el acceso.

Authorization

La autorización se logra invocando el método ValidatePermissions. Este método llama a la API resolvePermissions en el punto de conexión de control de la carga de trabajo de Fabric para el elemento de Fabric pertinente y verifica que el usuario tiene los permisos necesarios para la operación.