Share via


Protección de la API utilizada como conector de API en los flujos de usuarios de registro de autoservicio de Microsoft Entra External ID

Al integrar una API de REST en un flujo de usuario de registro de autoservicio de Microsoft Entra External ID, debe proteger el punto de conexión de la API de REST con autenticación. La autenticación de la API de REST garantiza que solo los servicios que tengan las credenciales adecuadas, como Microsoft Entra ID, puedan realizar llamadas al punto de conexión. En este artículo se examina cómo proteger la API REST.

Requisitos previos

Complete los pasos que se incluyen en la guía Tutorial: Incorporación de un conector de API a un flujo de usuario de registro.

Puede proteger el punto de conexión de la API mediante la autenticación HTTP básica o la autenticación de certificados de cliente HTTPS. En cualquier caso, debe proporcionar las credenciales que usa Microsoft Entra ID al llamar al punto de conexión de la API. A continuación, el punto de conexión de la API comprueba las credenciales y realiza decisiones de autorización.

Autenticación HTTP básica

Sugerencia

Los pasos de este artículo pueden variar ligeramente en función del portal desde donde comienza.

La autenticación HTTP básica se define en RFC 2617. La autenticación básica funciona de la manera siguiente: Microsoft Entra ID envía una solicitud HTTP con las credenciales del cliente (username y password) en el encabezado Authorization. Las credenciales tienen el formato de cadena codificada en Base 64 username:password. A continuación, la API es responsable de comprobar estos valores para tomar otras decisiones de autorización.

Para configurar un conector de API con autenticación básica HTTP, siga estos pasos:

  1. Inicie sesión en el Centro de administración de Microsoft Entra al menos como Administrador de usuario.
  2. Vaya a Identidad> Identidades externas>Información general.
  3. Seleccione Todos los conectores de API y, después, el conector de API que quiera configurar.
  4. En Tipo de autenticación, seleccione Básica.
  5. Rellene los campos Nombre de usuario y Contraseña con relación al punto de conexión de la API de REST. Screenshot of basic authentication configuration for an API connector.
  6. Seleccione Guardar.

Autenticación con certificados de cliente HTTPS

La autenticación con certificados de cliente es una autenticación mutua basada en certificados en la que el cliente, Microsoft Entra ID, proporciona su certificado de cliente al servidor para demostrar su identidad. Esto sucede como parte del protocolo de enlace SSL. La API es responsable de validar que los certificados pertenezcan a un cliente válido, como Microsoft Entra ID, y de tomar decisiones de autorización. El certificado de cliente es un certificado digital X.509.

Importante

En entornos de producción, el certificado debe estar firmado por una entidad de certificación.

Crear un certificado

Para crear un certificado, puede usar Azure Key Vault, que tiene opciones para certificados autofirmados e integraciones con proveedores de emisores de certificados para certificados firmados. La configuración recomendada incluye:

  • Asunto: CN=<yourapiname>.<tenantname>.onmicrosoft.com
  • Tipo de contenido: PKCS #12
  • Tipo de Acton de duración: Email all contacts at a given percentage lifetime o Email all contacts a given number of days before expiry
  • Tipo de clave: RSA
  • Tamaño de clave: 2048
  • Clave privada exportable: Yes (para poder exportar el archivo .pfx)

Después, puede exportar el certificado.

Opción 2: Preparar un certificado autofirmado mediante PowerShell

Si aún no tiene un certificado, puede usar un certificado autofirmado para este tutorial. Un certificado autofirmado es un certificado de seguridad que no está firmado por una entidad de certificación (CA) y no proporciona las garantías de seguridad de un certificado firmado por una CA.

En Windows, use el cmdlet New-SelfSignedCertificate de PowerShell para generar un certificado.

  1. Ejecute este comando de PowerShell para generar un certificado autofirmado. Modifique el argumento -Subject según corresponda para su aplicación y el nombre del inquilino de Azure AD B2C, por ejemplo contosowebapp.contoso.onmicrosoft.com. También puede ajustar la fecha de -NotAfter para especificar una expiración diferente para el certificado.

    New-SelfSignedCertificate `
        -KeyExportPolicy Exportable `
        -Subject "CN=yourappname.yourtenant.onmicrosoft.com" `
        -KeyAlgorithm RSA `
        -KeyLength 2048 `
        -KeyUsage DigitalSignature `
        -NotAfter (Get-Date).AddMonths(12) `
        -CertStoreLocation "Cert:\CurrentUser\My"
    
  2. En el equipo Windows, busque y seleccione Administrar certificados de usuario.

  3. En Certificados: usuario actual, seleccione Personal>Certificados>yourappname.yourtenant.onmicrosoft.com.

  4. Seleccione el certificado y, a continuación, seleccione Acción>Todas las tareas>Exportar.

  5. Seleccione Siguiente>Exportar la clave privada>Siguiente.

  6. Acepte los valores predeterminados de Formato de archivo de exportación y, luego, seleccione Siguiente.

  7. Habilite la opción Contraseña, escriba una contraseña para el certificado y, luego, elija Siguiente.

  8. Para especificar una ubicación para guardar el certificado, seleccione Examinar y vaya al directorio que prefiera.

  9. En la ventana Guardar como, escriba un nombre de archivo y, luego, elija Guardar.

  10. Seleccione Siguiente>Finalizar.

Para que Azure AD B2C acepte la contraseña del archivo .pfx, debe estar cifrada con la opción TripleDES-SHA1 de la utilidad de exportación del almacén de certificados de Windows en lugar de con AES256-SHA256.

Configuración de un conector de API

Para configurar un conector de API con autenticación de certificado de cliente, siga estos pasos:

  1. Inicie sesión en el Centro de administración de Microsoft Entra al menos como Administrador de usuario.
  2. Vaya a Identidad> Identidades externas>Información general.
  3. Seleccione Todos los conectores de API y, después, el conector de API que quiera configurar.
  4. En Tipo de autenticación, seleccione Certificado.
  5. En el cuadro Cargar certificado, seleccione el archivo .pfx del certificado con una clave privada.
  6. En el cuadro Escribir contraseña, escriba la contraseña del certificado. Screenshot of certificate authentication configuration for an API connector.
  7. Seleccione Guardar.

Toma de decisiones de autorización

La API debe implementar la autorización basada en certificados de cliente enviados con el fin de proteger los puntos de conexión de la API. Para obtener Azure App Service y Azure Functions, consulte Configuración de la autenticación mutua de TLS para obtener información sobre cómo habilitar y validar el certificado desde el código de la API. También puede usar Azure API Management como una capa delante de cualquier servicio de API para comprobar las propiedades del certificado de cliente con los valores deseados.

Renovación de certificados

Le recomendamos que establezca alertas de aviso para cuando expire el certificado. Deberá generar un certificado nuevo y repetir los pasos anteriores cuando los certificados utilizados estén a punto de expirar. Para "implementar" el uso de un nuevo certificado, el servicio de API puede seguir aceptando certificados antiguos y nuevos temporalmente mientras se implementa el nuevo certificado.

Para cargar un nuevo certificado en un conector de API existente, seleccione el conector de API en Conectores de API y seleccione Cargar certificado nuevo. Microsoft Entra ID usará automáticamente el certificado cargado más recientemente que no haya expirado y cuya fecha de inicio haya pasado.

Screenshot of a new certificate, when one already exists.

Autenticación mediante clave de API

Algunos servicios usan un mecanismo de "clave de API" para ofuscar el acceso a los puntos de conexión HTTP durante el desarrollo. Para ello, exigen que el autor de llamada incluya una clave única como un encabezado HTTP o un parámetro de consulta HTTP. Para lograrlo en Azure Functions, incluya code como parámetro de consulta en la dirección URL del punto de conexión del conector de la API. Por ejemplo, https://contoso.azurewebsites.net/api/endpoint?code=0123456789.

No se trata de un mecanismo que se debe usar por sí solo en el entorno producción. Por lo tanto, siempre se requiere la configuración de autenticación básica o de certificado. Si no quiere implementar ningún método de autenticación (opción no recomendada) con fines de desarrollo, puede elegir la autenticación básica en la configuración del conector de la API y usar valores temporales para username y password que la API pueda omitir mientras implementa la autorización adecuada.

Pasos siguientes