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 -LCurb 인증은 시스템의 다른 모든 곳에서 작동하므로 구성이 잘못되었는지는 확실하지 않습니다.

업데이트:

해결책을 찾았지만 여전히 이상한 동작이 있기 때문에 답변으로 게시하지 않았습니다. 사용자 이름을 추가했는데 @<domain>디버깅 중인 C# 앱에서 작동하지만 PowerShell에서 똑같은 명령을 실행하면 여전히 false가 반환됩니다. 하지만 지금은 KDC_ERR_PREAUTH_FAILED이벤트 뷰어에 이 표시됩니다.

관련 정보