Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用c连接active directory#_C#_Active Directory - Fatal编程技术网

C# 使用c连接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

我正在尝试连接到我使用过的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, 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(...