在 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()透過 lsass.exe 執行 NTLM 連線時我都可以看到被封鎖(事件檢視器中的事件 ID 4002)。我開啟了 Kerberos 日誌記錄,但嘗試驗證時事件檢視器中沒有產生任何事件。這讓我相信它甚至沒有嘗試 Kerberos 身份驗證,但我在這裡可能是錯的。

我已驗證電腦的 SPN 是否存在setspn -L,並且由於 Curb 身份驗證適用於系統中的其他任何位置,因此我不確定這是配置錯誤。

更新:

我找到了一個解決方案,但尚未將其發佈為答案,因為我仍然有一些奇怪的行為。我添加了@<domain>用戶名,這在我正在調試的 C# 應用程式中有效,但在 PowerShell 中運行完全相同的命令仍然返回 false,儘管現在我KDC_ERR_PREAUTH_FAILED在事件檢視器中得到了 。

相關內容