Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Importante
A partir del 1 de mayo de 2025, Azure AD B2C ya no estará disponible para la compra por parte de nuevos clientes. Obtenga más información en nuestras preguntas más frecuentes.
En este artículo se describe una técnica para habilitar la compatibilidad con varios emisores de tokens en las API web que implementan la interfaz web abierta para .NET (OWIN). Admitir varios puntos de conexión de token es útil al migrar las API de Azure Active Directory B2C (Azure AD B2C) y sus aplicaciones de un dominio a otro. Por ejemplo, de login.microsoftonline.com a b2clogin.com o a un dominio personalizado.
Al agregar compatibilidad en su API para aceptar tokens emitidos por b2clogin.com, login.microsoftonline.com o un dominio personalizado, puede migrar sus aplicaciones web de forma escalonada antes de dejar de aceptar tokens emitidos por login.microsoftonline.com en la API.
En las secciones siguientes se presenta un ejemplo de cómo habilitar varios emisores en una API web que usa los componentes de middleware de Microsoft OWIN (Katana). Aunque los ejemplos de código son específicos del middleware de Microsoft OWIN, la técnica general debe aplicarse a otras bibliotecas de OWIN.
Prerrequisitos
Necesita los siguientes recursos de Azure AD B2C antes de continuar con los pasos descritos en este artículo:
- Flujos de usuario o directivas personalizadas creadas en tu tenant
Obtención de los puntos de conexión de emisores de tokens
En primer lugar, debe obtener los URI de punto de conexión del emisor de tokens para cada emisor que quiera admitir en la API. Para obtener los puntos de conexión b2clogin.com y login.microsoftonline.com admitidos por el inquilino de Azure AD B2C, use el procedimiento siguiente en el portal de Azure.
Para empezar, seleccione uno de los flujos de usuario existentes:
Vaya a su inquilino de Azure AD B2C en Azure Portal
En Directivas, seleccione Flujos de usuario (directivas)
Seleccione una directiva existente, por ejemplo, B2C_1_signupsignin1 y, a continuación, seleccione Ejecutar flujo de usuario.
En el encabezado Ejecutar flujo de usuario situado cerca de la parte superior de la página, seleccione el hipervínculo para ir hasta el punto de conexión de detección de OpenID Connect para ese flujo de usuario.
En la página que se abre en el explorador, registre el
issuervalor, por ejemplo:https://your-b2c-tenant.b2clogin.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/v2.0/Use la lista desplegable Seleccionar dominio para seleccionar el otro dominio y, a continuación, realice los dos pasos anteriores una vez más y registre su
issuervalor.
Ahora debería tener registradas dos URI similares a:
https://login.microsoftonline.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/v2.0/
https://your-b2c-tenant.b2clogin.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/v2.0/
Directivas personalizadas
Si tiene directivas personalizadas en lugar de flujos de usuario, puede usar un proceso similar para obtener los URI del emisor.
- Ir al inquilino de Azure AD B2C
- Selección de Identity Experience Framework
- Seleccione una de las directivas de usuario de confianza, por ejemplo, B2C_1A_signup_signin
- Use la lista desplegable Seleccionar dominio para seleccionar un dominio, por ejemplo , yourtenant.b2clogin.com
- Seleccione el hipervínculo que se muestra en el punto de conexión de detección de OpenID Connect
- Registrar el valor de
issuer - Realice los pasos 4-6 para el otro dominio, por ejemplo , login.microsoftonline.com
Obtención del código de ejemplo
Ahora que tiene ambas URIs de puntos de acceso de token, debe actualizar el código para especificar que estos puntos de acceso son emisores válidos. Para recorrer un ejemplo, descargue o clone la aplicación de ejemplo y, a continuación, actualice el ejemplo para admitir ambos puntos de conexión como emisores válidos.
Descargue el archivo: active-directory-b2c-dotnet-webapp-and-webapi-master.zip
git clone https://github.com/Azure-Samples/active-directory-b2c-dotnet-webapp-and-webapi.git
Habilitación de varios emisores en la API web
En esta sección, actualice el código para especificar que ambos endpoints del emisor de tokens son válidos.
Abra la solución B2C-WebAPI-DotNet.sln en Visual Studio.
En el proyecto TaskService , abra el archivo TaskService\App_Start\Startup.Auth.cs en el editor.
Agregue la siguiente
usingdirectiva a la parte superior del archivo:using System.Collections.Generic;Agregue la
ValidIssuerspropiedad a laTokenValidationParametersdefinición y especifique ambos URI que registró en la sección anterior:TokenValidationParameters tvps = new TokenValidationParameters { // Accept only those tokens where the audience of the token is equal to the client ID of this app ValidAudience = ClientId, AuthenticationType = Startup.DefaultPolicy, ValidIssuers = new List<string> { "https://login.microsoftonline.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/v2.0/", "https://{your-b2c-tenant}.b2clogin.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/v2.0/"//, //"https://your-custom-domain/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/v2.0/" } };
TokenValidationParameters se proporciona mediante MSAL.NET y el middleware OWIN lo consume en la siguiente sección de código de Startup.Auth.cs. Si se especifican varios emisores válidos, la canalización de la aplicación OWIN es consciente de que ambos puntos de conexión de token son emisores válidos.
app.UseOAuthBearerAuthentication(new OAuthBearerAuthenticationOptions
{
// This SecurityTokenProvider fetches the Azure AD B2C metadata & from the OpenID Connect metadata endpoint
AccessTokenFormat = new JwtFormat(tvps, new tCachingSecurityTokenProvider(String.Format(AadInstance, ultPolicy)))
});
Como se mencionó anteriormente, otras bibliotecas de OWIN suelen proporcionar una instalación similar para admitir varios emisores. Aunque proporcionar ejemplos para cada biblioteca está fuera del ámbito de este artículo, puede usar una técnica similar para la mayoría de las bibliotecas.
Cambio de puntos de conexión en la aplicación web
Ahora, con ambos URI compatibles con la API web, ahora necesita actualizar la aplicación web para que recupere tokens del punto de conexión de b2clogin.com.
Por ejemplo, puede configurar la aplicación web de ejemplo para usar el nuevo punto de conexión modificando el ida:AadInstance valor en el archivo TaskWebApp\Web.config del proyecto TaskWebApp .
Cambie el valor de ida:AadInstance en la Web.config de TaskWebApp para que referencie a {your-b2c-tenant-name}.b2clogin.com en lugar de login.microsoftonline.com.
Antes:
<!-- Old value -->
<add key="ida:AadInstance" value="https://login.microsoftonline.com/tfp/{0}/{1}" />
Después (reemplace {your-b2c-tenant} por el nombre del inquilino de B2C):
<!-- New value -->
<add key="ida:AadInstance" value="https://{your-b2c-tenant}.b2clogin.com/tfp/{0}/{1}" />
Cuando se construyen las cadenas de puntos de conexión durante la ejecución de la aplicación web, se utilizan los puntos de conexión basados en b2clogin.com para solicitar tokens.
Al usar un dominio personalizado:
<!-- Custom domain -->
<add key="ida:AadInstance" value="https://custom-domain/{0}/{1}" />
Pasos siguientes
En este artículo se presentó un método para configurar una API web que implementa el middleware de Microsoft OWIN (Katana) para aceptar tokens de varios puntos de conexión del emisor. Como puede observar, hay varias cadenas más en los archivos Web.Config de los proyectos TaskService y TaskWebApp que tendrían que cambiarse si desea compilar y ejecutar estos proyectos en su propio tenant. Le damos la bienvenida a modificar los proyectos adecuadamente si desea verlos en acción; sin embargo, un tutorial completo de hacerlo está fuera del ámbito de este artículo.
Para más información sobre los distintos tipos de tokens de seguridad emitidos por Azure AD B2C, consulte Introducción a los tokens en Azure Active Directory B2C.