C# 何时自动检测到Active Directory
我正在构建一个应用程序,它将通过Active Directory对用户进行身份验证。不重要,不添加或编辑用户,只是验证凭据。我发现很多关于这个的帖子-一些使用System.DirectoryServices.AccountManagement(.NET 3.5及以上版本)或使用LDAP DirectoryEntry 我想知道我是否必须指定广告服务器URL?测试时,我不需要指定任何内容C# 何时自动检测到Active Directory,c#,.net,active-directory,account-management,C#,.net,Active Directory,Account Management,我正在构建一个应用程序,它将通过Active Directory对用户进行身份验证。不重要,不添加或编辑用户,只是验证凭据。我发现很多关于这个的帖子-一些使用System.DirectoryServices.AccountManagement(.NET 3.5及以上版本)或使用LDAP DirectoryEntry 我想知道我是否必须指定广告服务器URL?测试时,我不需要指定任何内容 何时自动检测到AD服务器?何时需要指定URL 我可以打电话获取自动检测到的广告服务器URL吗 创建域Princi
创建域
PrincipalContext
或DirectoryContext
而不指定域或路径时,将使用当前上下文。i、 e.代码正在执行的帐户。如果代码是在不在域中的帐户下执行的,则会引发异常。这适用于在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已经进行了验证,因此您已经知道该用户是有效的。原因有哪些?我不想只做当前用户,所以UserPrincipal.current将不起作用。我将允许我的用户以其他用户身份登录。你有什么建议吗?在同一个广告下有一个不同的域名怎么样?这样行吗?PrincipalContext oPrincipalContext=新PrincipalContext(ContextType.Domain,otherDomainName)@MikeTurner然后,只要当前用户是域的一部分,您就可以在我的回答中使用第一个代码示例,如果不是,请指定域、用户名和密码以用于身份验证检查。@SOS是,这样就可以了。如果存在信任,则仍然不需要域,但如果您正在检查的用户名包含域信息。@Ashigore最好不要这样做的其他原因是什么?