[英]Port requirements for System.DirectoryServices.ActiveDirectory
我们有一个使用 AD 实现基于角色的身份验证的产品。 在此应用程序开始时,它尝试枚举当前林中的所有域以获取一些稍后将使用的信息。
代码片段如下所示
Domain currentDomain = Domain.GetDomain(new DirectoryContext(DirectoryContextType.Domain));
Forest currentForest = currentDomain.Forest;
string forestName = currentForest.Name;
foreach (Domain domain in currentForest.Domains)
{
//processing code.
}
上面的代码运行良好,直到第 3 条语句和 ForestName 变量使用当前森林名称正确初始化。
但是当它尝试执行currentForest.Domains时,它在 foreach 循环中失败
我们收到 ActiveDirectoryServerDownException 错误消息“指定的域不存在或无法联系”,错误代码为 1355。
从下面的链接,我知道这可能是 dns 配置错误或端口可能被防火墙阻止。
https://social.technet.microsoft.com/Forums/msonline/en-US/53804e9d-ccdd-450a-967b-b7e8f67cddae/active-directory-error-code-1355?forum=winserverDS
我试图了解需要打开以在服务器机器(活动目录服务器)和客户端机器上进行通信的端口。
下面的链接指定了太多让我感到困惑的端口。
https://support.microsoft.com/en-us/help/832017/service-overview-and-network-port-requirements-for-windows
有人可以向我提供有关需要在服务器和客户端计算机上打开哪些端口的信息,以便我可以成功枚举林中的所有域。
这些方法使用 LDAP 协议与 AD 通信,AD 全部通过端口 389。
可以肯定的是,我运行了你的代码并观察了它使用的网络连接,它只使用了端口 389。
作为旁注,您可以通过使用Forest.GetCurrentForest()
来稍微简化您的代码,而不是查找当前域然后查找该域的林。
Forest currentForest = Forest.GetCurrentForest();
无论哪种方式都可以完成相同的工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.