我正在尝试使用以下代码验证主要上下文的凭据。但它给出错误“服务器无法处理目录请求”。
principalContext.ValidateCredentials("Username", "Password");
在做了一些互联网搜索后,我发现我需要传递另一个参数ContextOptions才能使它工作。
我找到了解决问题的链接
.Net's Directory Services throws a strange exception
principalContext.ValidateCredentials("Username", "Password", ContextOptions.Negotiate);
它正在发挥作用。但我无法理解根本原因。如果有人能够详细解释它,那将非常有帮助。
答案 0 :(得分:-1)
根据您在此处的描述,结果应该取决于您的AD环境。
谈判 - 使用Kerberos或NTLM对客户端进行身份验证。如果未提供用户名和密码,则Account Management API将使用调用线程的安全上下文绑定到对象,该安全上下文是运行应用程序的用户帐户的安全上下文或客户端用户帐户的安全上下文调用线程代表。
您可以从这里看到ContextOptions的定义: