Protección de cualquier API en Azure API Management mediante la autorización de OAuth 2.0 con Microsoft Entra ID

SE APLICA A: Todos los niveles de API Management

En este artículo se muestran los pasos de alto nivel necesarios para configurar la instancia de Azure API Management para proteger una API mediante el protocolo OAuth 2.0 con Microsoft Entra ID.

Para obtener información general conceptual sobre la autorización de API, consulte Autenticación y autorización para API en API Management.

Requisitos previos

Para seguir los pasos de este artículo, debe tener:

  • Una instancia de API Management
  • Una API publicada mediante la instancia API Management
  • Un inquilino de Microsoft Entra

Información general

Siga estos pasos para proteger cualquier API en API Management mediante la autorización de OAuth 2.0 con Microsoft Entra ID.

  1. Registre una aplicación (denominada aplicación back-end en este artículo) en Microsoft Entra ID para proteger el acceso a la API.

    Para acceder a la API, los usuarios o las aplicaciones adquirirán y presentarán un token de OAuth válido que conceda acceso a esta aplicación con cada solicitud de API.

  2. Configure la directiva validate-jwt en API Management para validar el token de OAuth de cada solicitud de API entrante. Las solicitudes válidas se pueden pasar a la API.

Los detalles tanto sobre los flujos de autorización de OAuth y sobre cómo generar los tokens de OAuth necesarios están fuera del ámbito de este artículo. Normalmente, se usa una aplicación cliente independiente para adquirir los tokens de Microsoft Entra ID que autorizan el acceso a la API. Para ver vínculos en los que encontrará más información, consulte la sección Pasos siguientes.

Registro de una aplicación en Microsoft Entra ID para representar la API

Desde Azure Portal puede proteger una API con Microsoft Entra ID; para ello, en primer lugar, debe registrar una aplicación que represente la API.

Para obtener detalles sobre el registro de aplicaciones, vea Inicio rápido: Configuración de una aplicación para exponer las API web.

  1. En Azure Portal, busque y seleccione Registros de aplicaciones.

  2. Seleccione Nuevo registro.

  3. Cuando aparece la página Registrar una aplicación, escriba la información de registro de la aplicación:

    • En la sección Nombre, escriba un nombre significativo para la aplicación, que se mostrará a los usuarios de la aplicación, por ejemplo, backend-app.
    • En la sección Tipos de cuenta admitidos, seleccione una opción que se ajuste a su escenario.
  4. Deje vacía la sección URI de redireccionamiento.

  5. Seleccione Registrar para crear la aplicación.

  6. En la página Información general de la aplicación, busque el valor de Id. de aplicación (cliente) y regístrelo para usarlo más tarde.

  7. En la sección Administrar del menú lateral, seleccione Exponer una API y configure el URI del id. de aplicación con el valor predeterminado. Si va a desarrollar una aplicación cliente independiente para obtener tokens de OAuth 2.0 para acceder a la aplicación back-end, registre este valor para usarlo más adelante.

  8. Seleccione el botón Agregar un ámbito para mostrar la página Agregar un ámbito:

    1. Ingrese un nombre de ámbito, un nombre para mostrar del consentimiento del administrador y la descripción del consentimiento del administrador.
    2. Asegúrese de seleccionar el estado del ámbito Habilitado.
  9. Seleccione el botón Agregar ámbito para crear el ámbito.

  10. Repita los dos pasos anteriores para agregar todos los ámbitos que admita la API.

  11. Una vez que se creen los ámbitos, anótelos para usarlos más adelante.

Configurar una directiva de validación de JWT para autorizar previamente las solicitudes

Cuando se agrega la siguiente directiva de ejemplo a la sección de la directiva <inbound>, se comprueba el valor de la notificación de audiencia en un token de acceso obtenido de Microsoft Entra ID que se presenta en el encabezado Authorization. Devuelve un error si el token no es válido. Configure esta directiva en un ámbito de directiva adecuado para su escenario.

  • En la dirección URL openid-config, el valor aad-tenant es el identificador de inquilino en Microsoft Entra ID. Busque este valor en Azure Portal, por ejemplo, en la página Información general del recurso de Microsoft Entra. En el ejemplo que se muestra se dan por hecho una aplicación de Microsoft Entra de un solo inquilino y un punto de conexión de configuración v2.
  • El valor de claim es el identificador de cliente de la aplicación de back-end que registró en Microsoft Entra ID.
<validate-jwt header-name="Authorization" failed-validation-httpcode="401" failed-validation-error-message="Unauthorized. Access token is missing or invalid.">
    <openid-config url="https://login.microsoftonline.com/{aad-tenant}/v2.0/.well-known/openid-configuration" />
    <audiences>
        <audience>{audience-value - (ex:api://guid)}</audience>
    </audiences>
    <issuers>
        <issuer>{issuer-value - (ex: https://sts.windows.net/{tenant id}/)}</issuer>
    </issuers>
    <required-claims>
        <claim name="aud">
            <value>{backend-app-client-id}</value>
        </claim>
    </required-claims>
</validate-jwt>

Nota:

La dirección URL openid-config anterior corresponde al punto de conexión v2. En cuanto al punto de conexión v1 openid-config, use https://login.microsoftonline.com/{aad-tenant}/.well-known/openid-configuration.

Para información sobre cómo configurar directivas, consulte el artículo sobre edición o establecimiento de directivas. Consulte la referencia validate-jwt para obtener más personalización en las validaciones de JWT. Para validar un JWT proporcionado por el servicio Microsoft Entra, API Management también proporciona la directiva validate-azure-ad-token.

Flujo de trabajo de las autorizaciones

  1. Un usuario o aplicación adquiere un token de Microsoft Entra ID con permisos que conceden acceso a la aplicación back-end.

  2. El token se agrega al encabezado Authorization de las solicitudes de API a API Management.

  3. API Management utiliza la directiva validate-jwt para validar el token.

    • Si una solicitud no tiene un token válido, API Management lo bloquea.

    • Si una solicitud va acompañada de un token válido, la puerta de enlace la puede reenviar a la API.

Pasos siguientes