C# 使用c连接active directory#
我正在尝试连接到我使用过的Active Directory代码C# 使用c连接active directory#,c#,active-directory,C#,Active Directory,我正在尝试连接到我使用过的Active Directory代码 string domain = "domain.com.pk"; string container = "DC=mycompnay,DC=com,DC=pk"; string Admin = "salman.zafar"; string Password = "password"; using (PrincipalContext pc = new PrincipalContext(ContextType.Domain, domain
string domain = "domain.com.pk";
string container = "DC=mycompnay,DC=com,DC=pk";
string Admin = "salman.zafar";
string Password = "password";
using (PrincipalContext pc = new PrincipalContext(ContextType.Domain, domain, container, Admin, Password))
{
string userPrincipalName = "dotnettest" + "@" + domain;
// validate the credentials
bool isValid = pc.ValidateCredentials(userPrincipalName, "Ascertia 12");
if (isValid) {
UserPrincipal up = UserPrincipal.FindByIdentity(pc, IdentityType.UserPrincipalName, userPrincipalName);
}
当代码在域中的计算机上运行时,代码工作正常,但如果我尝试连接到远程AD计算机,则会出现错误
我试着用
string domain = "192.168.0.150:389/domain.com.pk";
然后它就不起作用了,验证凭据方法总是返回false。有人能帮助我如何使用带有端口的IP连接到远程active directory吗?PrincipalContext,或者我必须使用目录条目
任何帮助都将不胜感激。请注意:
当代码在域中的计算机上运行时,代码工作正常
在这种情况下,如果机器是域成员(我在这里假设),则不需要在PrincipalContext
构造函数中提供adminuser+pw
如果要连接到任何其他AD服务器(域控制器),而外域和当前域之间不存在信任关系,请使用IP地址或服务器名作为“域名”:
如果您的目标只是检查凭据是否有效,那么您甚至可以省略admin user+pw:
string domainController = "192.168.0.150";
using (PrincipalContext pc = new PrincipalContext(ContextType.Domain, domainController))
{
string userPrincipalName = "dotnettest" + "@" + domain;
// validate the credentials
bool isValid = pc.ValidateCredentials(userPrincipalName, "Ascertia 12");
}
但是,在这种情况下,您不能
UserPrincipal up = UserPrincipal.FindByIdentity(...
因为PrincipalContext本身没有登录
你也可以在一个类似的问题中看到我的答案:
或者这篇文章您不需要受信任的活动目录来交叉连接吗?可能是我无法获得交叉连接,因为我正在为作为管理员的域提供管理员用户名和密码我正在使用mvc应用程序,该应用程序将提供AD访问及其动态,因为其配置基础用户将提供IP主机管理员帐户和pwd,然后通过代码我将看到可以连接到AD并查找一个用户,让他进来
UserPrincipal up = UserPrincipal.FindByIdentity(...