C# active directory远程访问
我已经在aws EC2机器windows 2012上设置了active directory。 它在本地非常有效。我已经安装了Active directory资源管理器,并且可以在本地查看用户等 问题是,我试图使用ldap(使用c#)从网络之外的计算机进行连接。 我能够成功登录,因为我的EC2有一个公共ip。 所以ValidateRadentials c#函数通过了OK 问题是,当我尝试从特定路径查询以获取用户时,会出现异常: 我调用函数: Exists(“LDAP://OU=Students,DC=hadoop,DC=com”) 不管我走哪条路,它都不起作用。 我得到的例外是: “指定的域不存在或无法联系” 我认为问题在于,本地hadoop.com无法从网络外部访问,因为它没有公共ip—它是我在本地创建的一个林名称 如何克服此问题,以便从网络外的pc连接到active directory服务器C# active directory远程访问,c#,active-directory,C#,Active Directory,我已经在aws EC2机器windows 2012上设置了active directory。 它在本地非常有效。我已经安装了Active directory资源管理器,并且可以在本地查看用户等 问题是,我试图使用ldap(使用c#)从网络之外的计算机进行连接。 我能够成功登录,因为我的EC2有一个公共ip。 所以ValidateRadentials c#函数通过了OK 问题是,当我尝试从特定路径查询以获取用户时,会出现异常: 我调用函数: Exists(“LDAP://OU=Students,D
非常感谢请确保您的安全组已启用对LDAP和active directory端口的访问 所以您要这样做:
DirectoryEntry.Exists("LDAP://OU=Students,DC=hadoop,DC=com")
但它不起作用。你有两个问题
存在公共静态bool(字符串路径、字符串用户名、字符串密码)
{
DirectoryEntry=新的DirectoryEntry(路径、用户名、密码);
尝试
{
_=entry.NativeObject;//引发异常(可能会中断应用程序)
返回true;
}
捕获(System.Runtime.InteropServices.COMException e)
{
如果(e.ErrorCode==未检查((int)0x80072030)||
e、 ErrorCode==未选中((int)0x80070003)| |//ERROR_DS_NO_此类对象和路径未找到(严格意义上未找到)
e、 ErrorCode==未选中((int)0x800708AC))//找不到组名
返回false;
投
}
最后
{
entry.Dispose();
}
}
你必须做的一个改变是改变Bind
的使用,因为这是一种内部
方法,不能被像我们这样的凡人使用。取而代之的是,我只是得到了财产,而这正是我想要的
您可以这样使用:
var ouExists=Exists(“LDAP://hadoop.com/OU=Students,DC=hadoop,DC=com”,“用户名”,“密码”);
您只能连接到文件夹,因为您可以ping服务器并共享驱动器。如果电脑不在公共网络上(防火墙后面),通过某种端口转发来通过防火墙,我会关闭防火墙。但还是不起作用?知道如何处理吗?它必须是一个公共IP地址,这样IP才能通过网络进行广告。远程计算机需要到IP的路由。通过端口转发,远程机器可以发送到防火墙,然后防火墙将识别端口号并转发到专用网络。我的ec2机器确实有一个公共地址。但是我的域名里面没有公共ip。防火墙已关闭,因此没有任何影响。你能解释一下我应该怎么做,因为我有点困惑吗?我想你的防火墙里面有一个私人网络。公共地址意味着外部世界(互联网)可以直接连接到机器。要能够连接,本地和远程计算机之间必须存在路由。IP地址必须是唯一的,以便internet上没有其他计算机具有相同的IP。因此,PING将在远程和本地机器之间工作。如果是公共IP,则防火墙未正确转发消息。因此,您可能会遇到防火墙上的掩码问题或DNS问题。谢谢,我这样做了,但它仍然不起作用-相同的异常…..请注意,ValidateCredentials功能正在工作,这意味着我通过了防火墙,并且凭证正常。访问路径时出现问题,路径是我创建的名为hadoop.com的windows服务器中的一个域。。。
LDAP://hadoop.com/OU=Students,DC=hadoop,DC=com