A validação de credenciais no PowerShell não usará Kerberos

A validação de credenciais no PowerShell não usará Kerberos

Na verdade, estou depurando um aplicativo C#, mas como o mesmo comando é possível no PowerShell, estou tentando lá.

Estou tentando validar contas de usuário usando o seguinte no 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")

O último comando sempre retorna falso. Verifiquei que as credenciais estão corretas fazendo login com elas. Desativamos a autenticação NTLM no ambiente e posso ver que cada vez que executo ValidateCredentials()uma conexão NTLM por lsass.exe é bloqueada (ID de evento 4002 no visualizador de eventos). Ativei o log do Kerberos, mas nenhum evento é gerado no visualizador de eventos ao tentar validar. Por sua vez, isso me leva a acreditar que ele nem tenta a autenticação Kerberos, mas posso estar errado aqui.

Verifiquei que existem SPNs para o computador setspn -Le, como a autenticação Curb funciona em qualquer outro lugar do sistema, não tenho certeza se é uma configuração incorreta.

Atualizar:

Encontrei uma solução, mas ainda não a publiquei como resposta, pois ainda tenho algum comportamento estranho. Adicionei @<domain>ao nome de usuário e isso funciona no aplicativo C# que estou depurando, mas executar exatamente o mesmo comando no PowerShell ainda retorna falso, embora agora eu receba um KDC_ERR_PREAUTH_FAILEDno visualizador de eventos.

informação relacionada