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 describen formas de personalizar y mejorar la experiencia de autenticación de Azure Active Directory B2C (Azure AD B2C) para la aplicación de escritorio de Windows Presentation Foundation (WPF).
Antes de empezar, familiarícese con el artículo Configuración de la autenticación en una aplicación de escritorio wpF de ejemplo mediante Azure AD B2C .
Rellenar previamente el nombre de usuario
Durante un proceso de inicio de sesión del usuario, la aplicación podría dirigirse a un usuario específico. Cuando una aplicación tiene como destino un usuario, puede especificar en la solicitud de autorización el login_hint
parámetro de consulta con el nombre de inicio de sesión del usuario. Azure AD B2C rellena automáticamente el nombre de inicio de sesión y el usuario debe proporcionar solo la contraseña.
Para rellenar previamente el nombre de inicio de sesión, haga lo siguiente:
- Si usa una directiva personalizada, agregue la notificación de entrada necesaria, como se describe en Configuración del inicio de sesión directo.
- Busque el objeto de configuración de la biblioteca de autenticación de Microsoft (MSAL) y luego agregue el método
withLoginHint()
con la sugerencia de inicio de sesión.
authResult = await app.AcquireTokenInteractive(App.ApiScopes)
.WithParentActivityOrWindow(new WindowInteropHelper(this).Handle)
.WithLoginHint("bob@contoso.com")
.ExecuteAsync();
Preseleccionar un proveedor de identidades
Si configuró el recorrido de inicio de sesión de la aplicación para incluir cuentas sociales, como Facebook, LinkedIn o Google, puede especificar el domain_hint
parámetro . Este parámetro de consulta proporciona una sugerencia a Azure AD B2C sobre el proveedor de identidades sociales que se debe usar para el inicio de sesión. Por ejemplo, si la aplicación especifica domain_hint=facebook.com
, el flujo de inicio de sesión va directamente a la página de inicio de sesión de Facebook.
Para redirigir a los usuarios a un proveedor de identidades externo, haga lo siguiente:
- Compruebe el nombre de dominio del proveedor de identidades externo. Para obtener más información, consulte Redireccionamiento del inicio de sesión a un proveedor de redes sociales.
- Cree o use un objeto existente
Dictionary
para almacenar parámetros de consulta adicionales. - Agregue el
domain_hint
parámetro con el nombre de dominio correspondiente al diccionario (por ejemplo,facebook.com
). - Pase el objeto de parámetros de consulta adicional al método del objeto de
WithExtraQueryParameters
configuración de MSAL.
Dictionary<string, string> extraQueryParameters = new Dictionary<string, string>();
extraQueryParameters.Add("domain_hint", "facebook.com");
authResult = await app.AcquireTokenInteractive(App.ApiScopes)
.WithParentActivityOrWindow(new WindowInteropHelper(this).Handle)
.WithExtraQueryParameters(extraQueryParameters)
.ExecuteAsync();
Especificar el idioma de la interfaz de usuario
La personalización de idioma en Azure AD B2C permite al flujo de usuario adaptarse a diversas lenguas para satisfacer las necesidades de los clientes. Para obtener más información, consulte Personalización de idioma.
Para establecer el idioma preferido, haga lo siguiente:
- Configurar la personalización del idioma.
- Cree o use un objeto existente
Dictionary
para almacenar parámetros de consulta adicionales. - Agregue el
ui_locales
parámetro con el código de idioma correspondiente al diccionario (por ejemplo,en-us
). - Pase el objeto de parámetros de consulta adicional al método del objeto de
WithExtraQueryParameters
configuración de MSAL.
Dictionary<string, string> extraQueryParameters = new Dictionary<string, string>();
extraQueryParameters.Add("ui_locales", "en-us");
authResult = await app.AcquireTokenInteractive(App.ApiScopes)
.WithParentActivityOrWindow(new WindowInteropHelper(this).Handle)
.WithExtraQueryParameters(extraQueryParameters)
.ExecuteAsync();
Pasar un parámetro de cadena de consulta personalizado
Con las directivas personalizadas, puede pasar un parámetro de cadena de consulta personalizado. Un buen ejemplo de caso de uso es cuando desea cambiar dinámicamente el contenido de la página.
Para pasar un parámetro de cadena de consulta personalizado, haga lo siguiente:
- Configure el elemento ContentDefinitionParameters .
- Cree o use un objeto existente
Dictionary
para almacenar parámetros de consulta adicionales. - Agregue el parámetro de cadena de consulta personalizado, como
campaignId
. Establezca el valor del parámetro (por ejemplo,germany-promotion
). - Pase el objeto de parámetros de consulta adicional al método del objeto de
WithExtraQueryParameters
configuración de MSAL.
Dictionary<string, string> extraQueryParameters = new Dictionary<string, string>();
extraQueryParameters.Add("campaignId", "germany-promotion");
authResult = await app.AcquireTokenInteractive(App.ApiScopes)
.WithParentActivityOrWindow(new WindowInteropHelper(this).Handle)
.WithExtraQueryParameters(extraQueryParameters)
.ExecuteAsync();
Paso de una sugerencia de token de identificador
Una aplicación de terceros de confianza puede enviar un JSON Web Token (JWT) entrante como parte de la solicitud de autorización de OAuth2. El token de entrada es una sugerencia sobre el usuario o la solicitud de autorización. Azure AD B2C valida el token y luego extrae la reclamación.
Para incluir una sugerencia de token de identificador en la solicitud de autenticación, haga lo siguiente:
- En la directiva personalizada, defina un perfil técnico de sugerencia para el token de identificador.
- En el código, genere o adquiera un token de identificador y, a continuación, establezca el token en una variable (por ejemplo,
idToken
). - Cree o use un objeto existente
Dictionary
para almacenar parámetros de consulta adicionales. - Agregue el
id_token_hint
parámetro con la variable correspondiente que almacena el token de identificador. - Pase el objeto de parámetros de consulta adicional al atributo del objeto de
extraQueryParameters
configuración de MSAL.
Dictionary<string, string> extraQueryParameters = new Dictionary<string, string>();
extraQueryParameters.Add("id_token_hint", idToken);
authResult = await app.AcquireTokenInteractive(App.ApiScopes)
.WithParentActivityOrWindow(new WindowInteropHelper(this).Handle)
.WithExtraQueryParameters(extraQueryParameters)
.ExecuteAsync();
Configurar el registro
La biblioteca MSAL genera mensajes de registro que pueden ayudar a diagnosticar problemas. La aplicación puede configurar el registro. La aplicación también puede proporcionarle un control personalizado sobre el nivel de detalle y si se registran los datos personales y organizativos.
Se recomienda establecer una devolución de llamada del registro de MSAL y proporcionar una forma de que los usuarios envíen registros cuando tengan problemas de autenticación. MSAL proporciona estos niveles de detalle de registro:
- Error: se ha producido un error y se generó un error. Este nivel se usa para depurar e identificar problemas.
- Advertencia: no se ha producido necesariamente un error o error, pero la información está pensada para diagnósticos e identificación de problemas.
- Info: MSAL registra eventos destinados a propósitos informativos y no necesariamente para la depuración.
- Detallado: este es el nivel predeterminado. MSAL registra los detalles completos del comportamiento de la biblioteca.
De forma predeterminada, el registrador de MSAL no captura ningún dato personal o organizativo. La biblioteca le ofrece la opción de habilitar el registro de datos personales y organizativos si decide hacerlo.
El siguiente fragmento de código muestra cómo configurar el registro de MSAL:
PublicClientApp = PublicClientApplicationBuilder.Create(ClientId)
.WithB2CAuthority(AuthoritySignUpSignIn)
.WithRedirectUri(RedirectUri)
.WithLogging(Log, LogLevel.Info, false) // don't log P(ersonally) I(dentifiable) I(nformation) details on a regular basis
.Build();
Configuración del URI de redirección
Durante el proceso de registro de aplicaciones de escritorio , al elegir un URI de redirección, tenga en cuenta las siguientes consideraciones importantes:
-
Desarrollo: para el uso de desarrollo en aplicaciones de escritorio, puede establecer el URI
http://localhost
de redirección en y Azure AD B2C respetará cualquier puerto de la solicitud. Si el URI registrado contiene un puerto, Azure AD B2C solo usará ese puerto. Por ejemplo, si el URI de redireccionamiento registrado eshttp://localhost
, el URI de redirección de la solicitud puede serhttp://localhost:<randomport>
. Si el URI de redireccionamiento registrado eshttp://localhost:8080
, el URI de redirección de la solicitud debe serhttp://localhost:8080
. -
Único: el esquema del URI de redirección debe ser único para cada aplicación. En el ejemplo
com.onmicrosoft.contosob2c.exampleapp://oauth/redirect
,com.onmicrosoft.contosob2c.exampleapp
es el esquema . Este patrón debe seguirse. Si dos aplicaciones comparten el mismo esquema, a los usuarios se les da una opción de aplicaciones. Si los usuarios eligen incorrectamente, se produce un error en el inicio de sesión. -
Completado: el URI de redirección debe tener un esquema y una ruta de acceso. La ruta de acceso debe contener al menos un carácter de barra diagonal después del dominio. Por ejemplo,
//oauth/
funciona y//oauth
produce un error. No incluya caracteres especiales en el URI. Por ejemplo, no se permite el carácter de subrayado (_).
Pasos siguientes
- Para obtener más información, consulta Opciones de configuración de MSAL para .NET, UWP y NetCore.