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。また、Kerb 認証はシステムの他のすべての場所で機能するため、構成ミスであるかどうかはわかりません。

アップデート:

解決策は見つかりましたが、まだ奇妙な動作が残っているため、回答として投稿していません。@<domain>ユーザー名に追加しましたが、デバッグ中の C# アプリでは動作しますが、PowerShell でまったく同じコマンドを実行しても false が返されます。ただし、KDC_ERR_PREAUTH_FAILEDイベント ビューアーには が表示されます。

関連情報