何时自动检测到Active Directory

时间:2017-05-15 17:22:58

标签: c# .net active-directory account-management

我正在构建一个通过Active Directory对用户进行身份验证的应用程序。没有什么专业,没有添加或编辑用户,只是验证凭据。我发现了很多帖子 - 有些使用System.DirectoryServices.AccountManagement(.NET 3.5及以上版本)或使用LDAP DirectoryEntry ...

我试图找出是否必须指定AD服务器网址?当我测试时,我不需要指定任何东西?

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

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

1 个答案:

答案 0 :(得分:1)

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

要验证针对域的凭据,您只需执行以下操作:

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

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

var currentUser = UserPrincipal.Current;

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