Compartir a través de


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

Se aplica a: Círculo verde con una marca de verificación blanca. Inquilinos de personal Círculo blanco con un símbolo X gris. Inquilinos externos (más información)

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

Completa los pasos en la Guía paso a paso: Añade un conector de API a un flujo de registro de usuario.

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

La autenticación básica HTTP 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 como al menos un administrador de usuarios.
  2. Vaya a Entra ID>External Identities>Información general.
  3. Seleccione Todos los conectores de API y, a continuación, seleccione el conector de API que desea configurar.
  4. En Tipo de autenticación, seleccione Básico.
  5. Proporcione el nombre de usuario y la contraseña del punto de conexión de la API REST. Captura de pantalla de la configuración de autenticación básica para un conector de API.
  6. Seleccione Guardar.

Autenticación con certificados de cliente HTTPS

La autenticación de certificados de cliente es una autenticación mutua basada en certificados. El cliente, Microsoft Entra ID, proporciona su certificado de cliente al servidor para demostrar su identidad 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 .pfx el archivo)

A continuación, 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 en 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 Personales>Certificados>yourappname.yourtenant.onmicrosoft.com.

  4. Seleccione el certificado y, a continuación, seleccione Action All Tasks Export (Exportar>todas las tareas>).

  5. Seleccione Siguiente>Sí, exporte la clave> privadaSiguiente.

  6. Acepte los valores predeterminados para Exportar formato de archivo y, a continuación, seleccione Siguiente.

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

  8. Para especificar una ubicación para guardar el certificado, seleccione Examinar y vaya a un directorio de su elección.

  9. En la ventana Guardar como , escriba un nombre de archivo y, a continuación, seleccione 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 como al menos un administrador de usuarios.
  2. Vaya a Entra ID>External Identities>Información general.
  3. Seleccione Todos los conectores de API y, a continuación, seleccione el conector de API que desea 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. Captura de pantalla de la configuración de autenticación de certificados para un conector de API.
  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 Azure App Service y Azure Functions, consulte la configuración de la autenticación mutua TLS para aprender a habilitar y validar el certificado desde el código de API. También puede usar Azure API Management como capa delante de cualquier servicio de API para comprobar las propiedades del certificado de cliente con los valores deseados.

Renovación de certificados

Se recomienda establecer alertas de recordatorio para cuando expire el certificado. Debe generar un nuevo certificado y repetir los pasos descritos en este artículo cuando los certificados usados 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 nuevo certificado. Microsoft Entra ID usa automáticamente el certificado cargado más recientemente que no ha expirado y cuya fecha de inicio ha pasado.

Captura de pantalla de un nuevo certificado, cuando ya existe uno.

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 Azure Functions, incluya code como un parámetro de consulta en el URL del punto de conexión del conector de API. Por ejemplo, https://contoso.azurewebsites.net/api/endpoint?code=0123456789.

No debe usar este mecanismo en producción por sí solo. 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