La validación de credenciales en PowerShell no utiliza Kerberos

La validación de credenciales en PowerShell no utiliza Kerberos

En realidad, estoy depurando una aplicación C#, pero como el mismo comando es posible en PowerShell, lo intento allí.

Estoy intentando validar cuentas de usuario usando lo siguiente en PowerShell:

> Add-Type -AssemblyName System.DirectoryServices.AccountManagement
> $ds = New-Object System.DirectoryServices.AccountManagement.PrincipalContext("domain", "<domain>", "<OuDN>", "negotiate", "<username>", "<password>")
> $ds.ValidateCredentials("<username>", "<password>", "negotiate")

El último comando siempre devuelve falso. Verifiqué que las credenciales sean correctas al iniciar sesión con ellas. Hemos desactivado la autenticación NTLM en el entorno y puedo ver que cada vez que ejecuto ValidateCredentials()una conexión NTLM mediante lsass.exe está bloqueada (ID de evento 4002 en el visor de eventos). Activé el registro de Kerberos pero no se generan eventos en el visor de eventos al intentar validar. Esto me lleva a creer que ni siquiera intenta la autenticación Kerberos, pero podría estar equivocado aquí.

Verifiqué que existen SPN para la computadora setspn -Ly, dado que la autenticación Curb funciona en todas partes del sistema, no estoy seguro de que se trate de una mala configuración.

Actualizar:

Encontré una solución, pero todavía no la publiqué como respuesta porque todavía tengo un comportamiento extraño. Agregué @<domain>el nombre de usuario y esto funciona en la aplicación C# que estoy depurando, pero ejecutar exactamente el mismo comando en PowerShell aún devuelve falso, aunque ahora aparece un mensaje KDC_ERR_PREAUTH_FAILEDen el visor de eventos.

información relacionada