Azure Active Directory - 验证主体上下文的凭据



我正在尝试使用以下代码验证主体上下文的凭据。但它给出错误"服务器无法处理目录请求"。

principalContext.ValidateCredentials("Username", "Password");

在做了一些互联网搜索后,我开始知道我需要传递另一个参数 ContextOptions 才能使其工作。

我找到了此链接来解决问题

.Net的目录服务抛出一个奇怪的异常

principalContext.ValidateCredentials("Username", "Password", ContextOptions.Negotiate);

它正在工作。但我无法理解根本原因。如果有人能详细解释它,那么它将非常有帮助。

根据此处的描述,结果实际上应该取决于您的 AD 环境。

协商 -客户端使用 Kerberos 或 NTLM 进行身份验证。如果未提供用户名和密码,帐户管理 API 将使用调用线程的安全上下文绑定到对象,该上下文是运行应用程序的用户帐户的安全上下文或调用线程表示的客户端用户帐户的安全上下文。

您可以从这里看到上下文选项的定义:

https://msdn.microsoft.com/en-us/library/system.directoryservices.accountmanagement.contextoptions(v=vs.110).aspx

最新更新