API seguras que se usan para conectores de API en Azure AD B2C

Al integrar una API de REST en un flujo de usuario de Azure Active Directory B2C, debe proteger el punto de conexión de la API mediante autenticación. La autenticación de la API de REST garantiza que solo los servicios que tengan credenciales adecuadas, como Azure Active Directory B2C, puedan realizar llamadas al punto de conexión. En este artículo se examina cómo proteger la API REST.

Requisitos previos

Siga los pasos que encontrará en la guía 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, es usted quien proporciona las credenciales que Azure AD B2C utiliza cuando llama a su punto de conexión de 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 HTTP básica se define en RFC 2617. La autenticación básica funciona de la manera siguiente:

  • Azure AD B2C 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 Azure Portal.
  2. En Servicios de Azure, seleccione Azure AD B2C o busque Azure AD B2C y selecciónelo.
  3. Seleccione 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. Providing basic authentication configuration for an API connector.
  6. Seleccione Guardar.

Agregar claves de directiva de nombre de usuario y contraseña de la API REST

Para configurar un perfil técnico de la API REST con autenticación HTTP básica, cree las siguientes claves criptográficas para almacenar el nombre de usuario y la contraseña:

  1. Inicie sesión en Azure Portal.
  2. Si tiene acceso a varios inquilinos, seleccione el icono Configuración en el menú superior para cambiar a su inquilino de Azure AD B2C desde el menú Directorios y suscripciones.
  3. Elija Todos los servicios en la esquina superior izquierda de Azure Portal, y busque y seleccione Azure AD B2C.
  4. En la página de introducción, seleccione Identity Experience Framework.
  5. Seleccione Claves de directiva y, luego, Agregar.
  6. En Opciones, seleccione Manual.
  7. En Nombre, escriba RestApiUsername. Es posible que se agregue automáticamente el prefijo B2C_1A_ .
  8. En el cuadro Secreto, escriba el nombre de usuario de la API REST.
  9. En Uso de la clave, seleccione Cifrado.
  10. Seleccione Crear.
  11. Vuelva a seleccionar Claves de directiva.
  12. Seleccione Agregar.
  13. En Opciones, seleccione Manual.
  14. En Nombre, escriba RestApiPassword. Es posible que se agregue automáticamente el prefijo B2C_1A_ .
  15. En el cuadro Secreto, escriba la contraseña de la API REST.
  16. En Uso de la clave, seleccione Cifrado.
  17. Seleccione Crear.

Configuración del perfil técnico de la API REST para usar la autenticación HTTP básica

Después de crear las claves necesarias, configure los metadatos de perfil técnico de la API REST para que hagan referencia a las credenciales.

  1. Abra el archivo de la directiva de extensión (TrustFrameworkExtensions.xml) en el directorio de trabajo.
  2. Busque el perfil técnico de la API REST. Por ejemplo, REST-ValidateProfile o REST-GetProfile.
  3. Busque el elemento <Metadata>.
  4. Cambie el valor de AuthenticationType a Basic.
  5. Cambie el valor de AllowInsecureAuthInProduction a false.
  6. Agregue el siguiente fragmento de código XML inmediatamente después del elemento </Metadata> de cierre:
    <CryptographicKeys>
        <Key Id="BasicAuthenticationUsername" StorageReferenceId="B2C_1A_RestApiUsername" />
        <Key Id="BasicAuthenticationPassword" StorageReferenceId="B2C_1A_RestApiPassword" />
    </CryptographicKeys>
    

El siguiente fragmento XML es un ejemplo de perfil técnico de RESTful configurado con autenticación básica HTTP:

<ClaimsProvider>
  <DisplayName>REST APIs</DisplayName>
  <TechnicalProfiles>
    <TechnicalProfile Id="REST-GetProfile">
      <DisplayName>Get user extended profile Azure Function web hook</DisplayName>
      <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.RestfulProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
      <Metadata>
        <Item Key="ServiceUrl">https://your-account.azurewebsites.net/api/GetProfile?code=your-code</Item>
        <Item Key="SendClaimsIn">Body</Item>
        <Item Key="AuthenticationType">Basic</Item>
        <Item Key="AllowInsecureAuthInProduction">false</Item>
      </Metadata>
      <CryptographicKeys>
        <Key Id="BasicAuthenticationUsername" StorageReferenceId="B2C_1A_RestApiUsername" />
        <Key Id="BasicAuthenticationPassword" StorageReferenceId="B2C_1A_RestApiPassword" />
      </CryptographicKeys>
      ...
    </TechnicalProfile>
  </TechnicalProfiles>
</ClaimsProvider>

Autenticación con certificados de cliente HTTPS

La autenticación con certificados de cliente es una autenticación mutua basada en certificados donde el cliente, Azure AD B2C, 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 los certificados que pertenecen a un cliente válido, como Azure AD B2C, 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 el módulo de 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 Azure Portal.
  2. En Servicios de Azure, seleccione Azure AD B2C.
  3. Seleccione 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. Providing 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. Cuando los certificados usados estén a punto de caducar, tendrá que generar un nuevo certificado y repetir los pasos anteriores. 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 haga clic en Cargar certificado nuevo. Azure AD B2C usará automáticamente el certificado cargado más recientemente, siempre que no haya caducado y su fecha de inicio haya pasado.

Providing a new certificate to an API connector when one already exists.

Adición de una clave de directiva de certificado de cliente

  1. Inicie sesión en Azure Portal.
  2. Si tiene acceso a varios inquilinos, seleccione el icono Configuración en el menú superior para cambiar a su inquilino de Azure AD B2C desde el menú Directorios y suscripciones.
  3. Elija Todos los servicios en la esquina superior izquierda de Azure Portal, y busque y seleccione Azure AD B2C.
  4. En la página de introducción, seleccione Identity Experience Framework.
  5. Seleccione Claves de directiva y, luego, Agregar.
  6. En el cuadro Opciones, seleccione Cargar.
  7. En el cuadro Nombre, escriba RestApiClientCertificate. El prefijo B2C_1A_ se agrega automáticamente.
  8. En el cuadro Carga de archivos, seleccione el archivo .pfx del certificado con una clave privada.
  9. En el cuadro Contraseña, escriba la contraseña del certificado.
  10. Seleccione Crear.

Configuración del perfil técnico de la API REST para usar la autenticación de certificado de cliente

Después de crear la clave necesaria, configure los metadatos de perfil técnico de la API REST para que hagan referencia al certificado de cliente.

  1. Abra el archivo de la directiva de extensión (TrustFrameworkExtensions.xml) en el directorio de trabajo.
  2. Busque el perfil técnico de la API REST. Por ejemplo, REST-ValidateProfile o REST-GetProfile.
  3. Busque el elemento <Metadata>.
  4. Cambie el valor de AuthenticationType a ClientCertificate.
  5. Cambie el valor de AllowInsecureAuthInProduction a false.
  6. Agregue el siguiente fragmento de código XML inmediatamente después del elemento </Metadata> de cierre:
    <CryptographicKeys>
       <Key Id="ClientCertificate" StorageReferenceId="B2C_1A_RestApiClientCertificate" />
    </CryptographicKeys>
    

El siguiente fragmento XML es un ejemplo de perfil técnico de RESTful configurado con un certificado de cliente HTTP:

<ClaimsProvider>
  <DisplayName>REST APIs</DisplayName>
  <TechnicalProfiles>
    <TechnicalProfile Id="REST-GetProfile">
      <DisplayName>Get user extended profile Azure Function web hook</DisplayName>
      <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.RestfulProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
      <Metadata>
        <Item Key="ServiceUrl">https://your-account.azurewebsites.net/api/GetProfile?code=your-code</Item>
        <Item Key="SendClaimsIn">Body</Item>
        <Item Key="AuthenticationType">ClientCertificate</Item>
        <Item Key="AllowInsecureAuthInProduction">false</Item>
      </Metadata>
      <CryptographicKeys>
        <Key Id="ClientCertificate" StorageReferenceId="B2C_1A_RestApiClientCertificate" />
      </CryptographicKeys>
      ...
    </TechnicalProfile>
  </TechnicalProfiles>
</ClaimsProvider>

Autenticación de portador OAuth2

La autenticación de token de portador se define en el Marco de autorización de OAuth2.0: Bearer Token Usage (RFC 6750) (Marco de autorización de OAuth2.0: uso del token de portador [RFC 6750]). En la autenticación de token de portador, Azure AD B2C envía una solicitud HTTP con un token en el encabezado de autorización.

Authorization: Bearer <token>

Un token de portador es una cadena opaca. Puede ser un token de acceso de JWT o cualquier cadena que la API REST espera que Azure AD B2C envíe en el encabezado de autorización. Azure AD B2C admite los tipos siguientes:

  • Token de portador. Para poder enviar el token de portador en el perfil técnico de RESTful, la directiva debe adquirir primero el token de portador y usarlo en el perfil técnico de RESTful.
  • Token de portador estático. Use este enfoque cuando la API REST emita un token de acceso a largo plazo. Para usar un token de portador estático, cree una clave de directiva y haga una referencia desde el perfil técnico de RESTful a la clave de la directiva.

Uso del portador de OAuth2

En los pasos siguientes se muestra cómo usar las credenciales del cliente para obtener un token de portador y pasarlo al encabezado de autorización de las llamadas API REST.

Definir una notificación para almacenar el token de portador

Una notificación proporciona un almacenamiento temporal de datos durante la ejecución de una directiva de Azure AD B2C. El esquema de notificaciones es el lugar en el que se declaran las notificaciones. El token de acceso debe almacenarse en una notificación para usarse más tarde.

  1. Abra el archivo de extensiones de la directiva. Por ejemplo, SocialAndLocalAccounts/TrustFrameworkExtensions.xml.
  2. Busque el elemento BuildingBlocks. Si el elemento no existe, agréguelo.
  3. Busque el elemento ClaimsSchema. Si el elemento no existe, agréguelo.
  4. Agregue las notificaciones siguientes al elemento ClaimsSchema.
<ClaimType Id="bearerToken">
  <DisplayName>Bearer token</DisplayName>
  <DataType>string</DataType>
</ClaimType>
<ClaimType Id="grant_type">
  <DisplayName>Grant type</DisplayName>
  <DataType>string</DataType>
</ClaimType>
<ClaimType Id="scope">
  <DisplayName>scope</DisplayName>
  <DataType>string</DataType>
</ClaimType>

Obtención un token de acceso

Los tokens de acceso se pueden obtener de varias maneras: de un proveedor de identidades federado, mediante una llamada a una API REST que devuelve un token de acceso, mediante un flujo de ROPC o mediante el flujo de credenciales del cliente. El flujo de credenciales del cliente se usa principalmente para las interacciones entre servidores que se deben ejecutar en segundo plano, sin la interacción inmediata con un usuario.

Adquisición de un token de acceso de Microsoft Entra

En el ejemplo siguiente se usa un perfil técnico de API REST para realizar una solicitud al punto de conexión del token de Microsoft Entra con las credenciales de cliente pasadas como autenticación HTTP básica. Para obtener más información, consulte La Plataforma de identidad de Microsoft y el flujo de credenciales de cliente de OAuth 2.0.

Para que el perfil técnico pueda interactuar con Microsoft Entra ID para obtener un token de acceso, debe registrar una aplicación. Azure AD B2C se basa en la plataforma de Microsoft Entra. Puede crear la aplicación en el inquilino de Azure AD B2C o en cualquier inquilino de Microsoft Entra que administre. Para registrar una aplicación:

  1. Inicie sesión en Azure Portal.
  2. Si tiene acceso a varios inquilinos, seleccione el icono Configuración en el menú superior para cambiar a su inquilino de Azure AD B2C desde el menú Directorios y suscripciones.
  3. En el menú de la izquierda, seleccione Microsoft Entra ID. O bien, seleccione Todos los servicios y busque y seleccione Microsoft Entra ID.
  4. Seleccione Registros de aplicaciones y luego Nuevo registro.
  5. Escriba un Nombre para la aplicación. Por ejemplo, App_Aut_Credenciales_Clientes.
  6. En Tipos de cuenta admitidos, seleccione Solo las cuentas de este directorio organizativo.
  7. Seleccione Registrar.
  8. Registre el Id. de aplicación (cliente) .

Para un flujo de credenciales de cliente, tiene que crear un secreto de aplicación. El secreto de cliente también se conoce como contraseña de la aplicación. La aplicación usa el secreto para adquirir un token de acceso.

  1. En la página Microsoft Entra ID: registros de aplicaciones, seleccione la aplicación que ha creado, por ejemplo, App_Aut_Credenciales_Clientes.
  2. En el menú de la izquierda, en Administrar, seleccione Certificados y secretos.
  3. Seleccione Nuevo secreto de cliente.
  4. Escriba una descripción para el secreto de cliente en el cuadro Descripción. Por ejemplo, clientsecret1.
  5. En Expira, seleccione el tiempo durante el cual el secreto es válido y, a continuación, seleccione Agregar.
  6. Registre el valor del secreto para usarlo en el código de la aplicación cliente. Este valor secreto no se volverá a mostrar una vez que abandone esta página. Use este valor como secreto de aplicación en el código de la aplicación.

Creación de las claves de directiva de Azure AD B2C

Tiene que almacenar el identificador de cliente y el valor de secreto de cliente que haya registrado previamente en el inquilino de Azure AD B2C.

  1. Inicie sesión en Azure Portal.
  2. Si tiene acceso a varios inquilinos, seleccione el icono Configuración en el menú superior para cambiar a su inquilino de Azure AD B2C desde el menú Directorios y suscripciones.
  3. Elija Todos los servicios en la esquina superior izquierda de Azure Portal, y busque y seleccione Azure AD B2C.
  4. En la página de introducción, seleccione Identity Experience Framework.
  5. Seleccione Claves de directiva y luego Agregar.
  6. En Opciones, elija Manual.
  7. Escriba un Nombre para la clave de directiva, SecureRESTClientId. Se agregará el prefijo B2C_1A_ automáticamente al nombre de la clave.
  8. En Secreto, escriba el identificador de cliente que haya registrado previamente.
  9. En Uso de claves, seleccione Signature.
  10. Seleccione Crear.
  11. Cree otra clave de directiva con la siguiente configuración:
    • Nombre: SecureRESTClientSecret.
    • Secreto: escriba el secreto de cliente que haya registrado previamente.

Para ServiceUrl, reemplace el nombre del inquilino con el nombre del inquilino de Microsoft Entra. Consulte las opciones disponibles en la referencia del perfil técnico de RESTful.

<TechnicalProfile Id="REST-AcquireAccessToken">
  <DisplayName></DisplayName>
  <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.RestfulProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
  <Metadata>
    <Item Key="ServiceUrl">https://login.microsoftonline.com/your-tenant-name.onmicrosoft.com/oauth2/v2.0/token</Item>
    <Item Key="AuthenticationType">Basic</Item>
     <Item Key="SendClaimsIn">Form</Item>
  </Metadata>
  <CryptographicKeys>
    <Key Id="BasicAuthenticationUsername" StorageReferenceId="B2C_1A_SecureRESTClientId" />
    <Key Id="BasicAuthenticationPassword" StorageReferenceId="B2C_1A_SecureRESTClientSecret" />
  </CryptographicKeys>
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="grant_type" DefaultValue="client_credentials" AlwaysUseDefaultValue="true" />
    <InputClaim ClaimTypeReferenceId="scope" DefaultValue="https://graph.microsoft.com/.default" AlwaysUseDefaultValue="true" />
  </InputClaims>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="bearerToken" PartnerClaimType="access_token" />
  </OutputClaims>
  <UseTechnicalProfileForSessionManagement ReferenceId="SM-Noop" />
</TechnicalProfile>

Nota:

Si usa las notificaciones grant_type o scope en otros perfiles técnicos, se recomienda que también especifiquen DefaultValue y usen AlwaysUseDefaultValue="true" para evitar posibles conflictos al enlazar con el valor incorrecto.

Cambio del perfil técnico de REST para usar la autenticación del token de portador

Para admitir la autenticación con token de portador en su directiva personalizada, siga estos pasos para modificar el perfil técnico de la API REST:

  1. Abra el archivo de directiva de extensión TrustFrameworkExtensions.xml desde el directorio de trabajo.

  2. Busque el nodo <TechnicalProfile> que incluya Id="REST-API-SignUp".

  3. Busque el elemento <Metadata>.

  4. Cambie el valor de AuthenticationType a Bearer, como se muestra a continuación:

    <Item Key="AuthenticationType">Bearer</Item>
    
  5. Cambie o agregue UseClaimAsBearerToken a bearerToken como se indica a continuación. bearerToken es el nombre de la notificación de la que se recupera el token de portador (notificación de salida de REST-AcquireAccessToken).

    <Item Key="UseClaimAsBearerToken">bearerToken</Item>
    
  6. Agregue la notificación del paso anterior como una notificación de entrada:

    <InputClaim ClaimTypeReferenceId="bearerToken"/>
    

Después de actualizar la directiva, el perfil técnico debería ser similar al siguiente código XML:

<ClaimsProvider>
  <DisplayName>REST APIs</DisplayName>
  <TechnicalProfiles>
    <TechnicalProfile Id="REST-GetProfile">
      <DisplayName>Get user extended profile Azure Function web hook</DisplayName>
      <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.RestfulProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
      <Metadata>
        <Item Key="ServiceUrl">https://your-account.azurewebsites.net/api/GetProfile?code=your-code</Item>
        <Item Key="SendClaimsIn">Body</Item>
        <Item Key="AuthenticationType">Bearer</Item>
        <Item Key="UseClaimAsBearerToken">bearerToken</Item>
        <Item Key="AllowInsecureAuthInProduction">false</Item>
      </Metadata>
      <InputClaims>
        <InputClaim ClaimTypeReferenceId="bearerToken"/>
      </InputClaims>
      ...
    </TechnicalProfile>
  </TechnicalProfiles>
</ClaimsProvider>

Llamada al perfil técnico de REST

Para llamar al perfil técnico REST-GetProfile, primero debe adquirir un token de acceso de Microsoft Entra mediante el perfil técnico REST-AcquireAccessToken. En el ejemplo siguiente se muestra cómo llamar al perfil técnico REST-GetProfile desde un perfil técnico de validación:

<ValidationTechnicalProfiles>
  <ValidationTechnicalProfile ReferenceId="REST-AcquireAccessToken" />
  <ValidationTechnicalProfile ReferenceId="REST-GetProfile" />
</ValidationTechnicalProfiles>

En el siguiente ejemplo se muestra cómo llamar al perfil técnico REST-GetProfile desde un recorrido del usuario o un subrecorrido:

<OrchestrationSteps>
  <OrchestrationStep Order="2" Type="ClaimsExchange">
    <ClaimsExchanges>
      <ClaimsExchange Id="REST-AcquireAccessTokens" TechnicalProfileReferenceId="REST-AcquireAccessToken" />
    </ClaimsExchanges>
  </OrchestrationStep>

  <OrchestrationStep Order="3" Type="ClaimsExchange">
    <ClaimsExchanges>
      <ClaimsExchange Id="REST-GetProfile" TechnicalProfileReferenceId="REST-GetProfile" />
    </ClaimsExchanges>
  </OrchestrationStep>
</OrchestrationSteps>

Uso de un portador OAuth2 estático

Adición de la clave de la directiva de token de portador de OAuth2

Para configurar un perfil técnico de la API REST con un token de portador de OAuth2, obtenga un token de acceso del propietario de la API REST. A continuación, cree la siguiente clave criptográfica para almacenar el token de portador.

  1. Inicie sesión en Azure Portal.
  2. Si tiene acceso a varios inquilinos, seleccione el icono Configuración en el menú superior para cambiar a su inquilino de Azure AD B2C desde el menú Directorios y suscripciones.
  3. Elija Todos los servicios en la esquina superior izquierda de Azure Portal, y busque y seleccione Azure AD B2C.
  4. En la página de introducción, seleccione Identity Experience Framework.
  5. Seleccione Claves de directiva y, luego, Agregar.
  6. En Opciones, elija Manual.
  7. Escriba un nombre para la clave de directiva. Por ejemplo, RestApiBearerToken. Se agregará el prefijo B2C_1A_ automáticamente al nombre de la clave.
  8. En Secreto, escriba el secreto de cliente que haya registrado previamente.
  9. En Uso de claves, seleccione Encryption.
  10. Seleccione Crear.

Configuración del perfil técnico de la API REST para usar la clave de directiva de token de portador

Después de crear la clave necesaria, configure los metadatos de perfil técnico de la API REST para que hagan referencia al token de portador.

  1. Abra el archivo de la directiva de extensión (TrustFrameworkExtensions.xml) en el directorio de trabajo.
  2. Busque el perfil técnico de la API REST. Por ejemplo, REST-ValidateProfile o REST-GetProfile.
  3. Busque el elemento <Metadata>.
  4. Cambie el valor de AuthenticationType a Bearer.
  5. Cambie el valor de AllowInsecureAuthInProduction a false.
  6. Agregue el siguiente fragmento de código XML inmediatamente después del elemento </Metadata> de cierre:
    <CryptographicKeys>
       <Key Id="BearerAuthenticationToken" StorageReferenceId="B2C_1A_RestApiBearerToken" />
    </CryptographicKeys>
    

El siguiente fragmento XML es un ejemplo de perfil técnico RESTful configurado con autenticación de token de portador:

<ClaimsProvider>
  <DisplayName>REST APIs</DisplayName>
  <TechnicalProfiles>
    <TechnicalProfile Id="REST-GetProfile">
      <DisplayName>Get user extended profile Azure Function web hook</DisplayName>
      <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.RestfulProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
      <Metadata>
        <Item Key="ServiceUrl">https://your-account.azurewebsites.net/api/GetProfile?code=your-code</Item>
        <Item Key="SendClaimsIn">Body</Item>
        <Item Key="AuthenticationType">Bearer</Item>
        <Item Key="AllowInsecureAuthInProduction">false</Item>
      </Metadata>
      <CryptographicKeys>
        <Key Id="BearerAuthenticationToken" StorageReferenceId="B2C_1A_RestApiBearerToken" />
      </CryptographicKeys>
      ...
    </TechnicalProfile>
  </TechnicalProfiles>
</ClaimsProvider>

Agregue la referencia del perfil técnico de validación al perfil técnico de registro, que llama a REST-AcquireAccessToken. Este comportamiento significa que Azure AD B2C pasa a crear la cuenta en el directorio solo después de la validación correcta.

Por ejemplo:

```XML
<ValidationTechnicalProfiles>
   ....
   <ValidationTechnicalProfile ReferenceId="REST-AcquireAccessToken" />
   ....
</ValidationTechnicalProfiles>

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.

La clave de API es un identificador único que se usa para autenticar a un usuario para acceder a un punto de conexión de la API REST. La clave se envía en un encabezado HTTP personalizado. Por ejemplo, el desencadenador HTTP de Azure Functions utiliza el encabezado HTTP x-functions-key para identificar al solicitante.

Incorporación de claves de directiva de clave de API

Para configurar un perfil técnico de la API REST con autenticación mediante clave de API, cree la siguiente clave criptográfica para almacenar la clave de API:

  1. Inicie sesión en Azure Portal.
  2. Si tiene acceso a varios inquilinos, seleccione el icono Configuración en el menú superior para cambiar a su inquilino de Azure AD B2C desde el menú Directorios y suscripciones.
  3. Elija Todos los servicios en la esquina superior izquierda de Azure Portal, y busque y seleccione Azure AD B2C.
  4. En la página de introducción, seleccione Identity Experience Framework.
  5. Seleccione Claves de directiva y, luego, Agregar.
  6. En Opciones, seleccione Manual.
  7. En Nombre, escriba RestApiKey. Es posible que se agregue automáticamente el prefijo B2C_1A_ .
  8. En el cuadro Secreto, escriba la clave de API REST.
  9. En Uso de la clave, seleccione Cifrado.
  10. Seleccione Crear.

Configuración del perfil técnico de la API REST para usar la autenticación mediante clave de API

Después de crear la clave necesaria, configure los metadatos de perfil técnico de la API REST para que hagan referencia a las credenciales.

  1. Abra el archivo de la directiva de extensión (TrustFrameworkExtensions.xml) en el directorio de trabajo.
  2. Busque el perfil técnico de la API REST. Por ejemplo, REST-ValidateProfile o REST-GetProfile.
  3. Busque el elemento <Metadata>.
  4. Cambie el valor de AuthenticationType a ApiKeyHeader.
  5. Cambie el valor de AllowInsecureAuthInProduction a false.
  6. Agregue el siguiente fragmento de código XML inmediatamente después del elemento </Metadata> de cierre:
    <CryptographicKeys>
        <Key Id="x-functions-key" StorageReferenceId="B2C_1A_RestApiKey" />
    </CryptographicKeys>
    

El identificador (Id) de la clave criptográfica define el encabezado HTTP. En este ejemplo, la clave de API se envía como x-functions-key.

El siguiente fragmento XML es un ejemplo de perfil técnico RESTful configurado para llamar a una función de Azure con autenticación de clave de API:

<ClaimsProvider>
  <DisplayName>REST APIs</DisplayName>
  <TechnicalProfiles>
    <TechnicalProfile Id="REST-GetProfile">
      <DisplayName>Get user extended profile Azure Function web hook</DisplayName>
      <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.RestfulProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
      <Metadata>
        <Item Key="ServiceUrl">https://your-account.azurewebsites.net/api/GetProfile?code=your-code</Item>
        <Item Key="SendClaimsIn">Body</Item>
        <Item Key="AuthenticationType">ApiKeyHeader</Item>
        <Item Key="AllowInsecureAuthInProduction">false</Item>
      </Metadata>
      <CryptographicKeys>
        <Key Id="x-functions-key" StorageReferenceId="B2C_1A_RestApiKey" />
      </CryptographicKeys>
      ...
    </TechnicalProfile>
  </TechnicalProfiles>
</ClaimsProvider>

Pasos siguientes

  • Comience a trabajar con nuestros ejemplos.
  • Obtenga más información sobre el elemento de perfil técnico RESTful en la referencia de directivas personalizadas.