繁体   English   中英

何时自动检测到Active Directory

[英]When is Active Directory Auto Detected

我正在构建一个将通过Active Directory验证用户身份的应用程序。 不需要验证,也不需要添加或编辑用户,仅需验证凭据即可。 我发现了很多关于此的帖子-一些使用System.DirectoryServices.AccountManagement(.NET 3.5及更高版本)或使用LDAP DirectoryEntry ...

我想弄清楚是否必须指定AD服务器URL? 测试时,我不需要指定任何内容吗?

  1. 何时自动检测到AD服务器? 什么时候需要指定URL?

  2. 我可以打电话获取自动检测到的AD服务器URL吗?

当您创建域PrincipalContextDirectoryContext而不指定域或路径时,将使用当前上下文。 即代码正在执行的帐户。 如果代码在不在域中的帐户下执行,则将引发异常。 这适用于在Windows窗体应用程序或服务中运行的天气。

要针对某个域验证凭据,您需要做的是:

public bool ValidateCredentials(string username, string password)
{
    using (var principalcontext = new PrincipalContext(ContextType.Domain))
    {
        return principalContext.ValidateCredentials(username, password);
    }
}

但是,由于许多原因,这不是最好的方法。 例如,即使用户由于密码过期等原因而无法登录, ValidateCredentials也可以返回true。其次,有一种更简便的方法可将Active Directory单点登录用于桌面应用程序:

var currentUser = UserPrincipal.Current;

这将返回当前用户的主体,无需重新验证,Windows已经进行了验证,因此您已经知道该用户有效。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM