es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Error de inicio de sesión de Azure en el escritorio en .NET 5 con MSAL WAM (Windows Server 2016)

Estoy experimentando un problema con mi aplicación de WPF (.NET 5) que intenta autenticar al usuario de forma interactiva con una aplicación nativa de Azure AD registrada.

Agradecería cualquier sugerencia que puedan tener sobre este problema.

Mi código sigue el tutorial de Microsoft https://learn.microsoft.com/en-us/azure/active-directory/develop/tutorial-v2-windows-desktop y el fragmento básico sigue el código que muestra Microsoft en su ejemplo https://learn.microsoft.com/en-us/azure/active-directory/develop/tutorial-v2-windows-desktop.

En cuanto a .NET 5, el código utiliza WAM y el proyecto está configurado para: net5.0-windows10.0.17763.0 con SupportedOSPlatformVersion = 7 como se requiere. El único paquete NuGet utilizado es: Microsoft.Identity.Client 4.39.0.

Ahora, el código funciona perfectamente en Windows 10, pero falla en Windows Server 2016.

Lo que sucede en Windows 2016 es que aparece la pantalla de inicio de sesión de Azure en pantalla y luego desaparece. Se devuelve una excepción con el mensaje “Error de respuesta del intermediario: el usuario canceló la autenticación.“. Hay un error en el Registro de eventos del complemento del intermediario, a continuación. WAM supuestamente funcionaba en Windows 2016, ¿no es así?

Registro de eventos:

Nombre de la aplicación con errores: Microsoft.AAD.BrokerPlugin.exe, versión: 10.0.14393.4704, marca de tiempo: 0x615bdfaa
Nombre del módulo con errores: AAD.Core.dll, versión: 10.0.14393.4704, marca de tiempo: 0x615bdfc2
Código de excepción: 0xc0000005

(...)
Ruta del módulo con errores: C:\Windows\SystemApps\Microsoft.AAD.BrokerPlugin_cw5n1h2txyewy\AAD.Core.dll
Microsoft.AAD.BrokerPlugin_1000.14393.0.0_neutral_neutral_cw5n1h2txyewy

Incluyo el fragmento de código a continuación, es casi igual al de la aplicación de ejemplo de Microsoft.

var builder = PublicClientApplicationBuilder.Create(ClientId)
    .WithAuthority($"{Instancia}{Inquilino}")
    .WithRedirectUri("http://localhost")
    .WithBroker();

var clientApp = builder.Build();

var authResult = await clientApp.AcquireTokenInteractive(scopes)
    .WithAccount(firstAccount)
    .WithParentActivityOrWindow(new WindowInteropHelper(this).Handle)
    .WithPrompt(Prompt.SelectAccount)
    .ExecuteAsync();
Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Parece que el WAM (Windows Authentication Manager) no está funcionando correctamente en Windows Server 2016. Una posible solución podría ser utilizar el antiguo ADAL (Active Directory Authentication Library) en lugar de MSAL (Microsoft Authentication Library), ya que parece tener una mejor compatibilidad con versiones anteriores de Windows.

    Otra sugerencia sería comprobar si se han instalado las características de Windows requeridas para WAM en la máquina de Windows Server 2016, como se indica en este artículo: https://docs.microsoft.com/en-us/windows/security/identity-protection/hello-for-business/hello-planning-guide#hardware-software-and-infrastructure-requirements-for-windows-hello-for-business

    Si ninguna de estas sugerencias funciona, puede ser necesario ponerse en contacto con el soporte de Microsoft para obtener ayuda adicional.

Comments are closed.