Проверка учетных данных в PowerShell не использует Kerberos

Проверка учетных данных в PowerShell не использует Kerberos

На самом деле я отлаживаю приложение C#, но поскольку та же команда возможна в PowerShell, я пробую выполнить ее там.

Я пытаюсь проверить учетные записи пользователей, используя следующее в 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")

Последняя команда всегда возвращает false, я проверил учетные данные, войдя с ними в систему. Мы отключили аутентификацию NTLM в среде, и я вижу, что каждый раз, когда я выполняю ValidateCredentials()соединение NTLM с помощью lsass.exe, оно блокируется (идентификатор события 4002 в средстве просмотра событий). Я включил ведение журнала Kerberos, но при попытке проверки в средстве просмотра событий не генерируются никакие события. Это заставляет меня думать, что он даже не пытается выполнить аутентификацию Kerberos, но я могу ошибаться.

Я проверил, что SPN для компьютера существуют setspn -L, и поскольку аутентификация Kerb работает везде в системе, я не уверен, что это неправильная конфигурация.

Обновлять:

Я нашел решение, но пока не публикую его как ответ, так как у меня все еще есть странное поведение. Я добавил @<domain>к имени пользователя, и это работает в приложении C#, которое я отлаживаю, но запуск той же самой команды в PowerShell по-прежнему возвращает false, хотя теперь я получаю KDC_ERR_PREAUTH_FAILEDв средстве просмотра событий.

Связанный контент