【发布时间】:2017-03-28 04:05:10
【问题描述】:
所以这是我的问题。我有一个基于表单的身份验证的 Asp.net 应用程序。我的数据库中有用户,但用户也必须在活动目录中。
以下代码用于检查用户是否在域 A 中
DirectoryEntry de = new DirectoryEntry();
de.Path = "LDAP://domainA.com";
de.AuthenticationType = AuthenticationTypes.None;
DirectorySearcher search = new DirectorySearcher(de);
search.Filter = "(SAMAccountName=" + account + ")";
search.PropertiesToLoad.Add("displayName");
SearchResult result = search.FindOne();
此代码工作正常。问题是客户端请求域 B 也应该能够连接到应用程序。于是创建了以下代码:
DirectoryEntry de = new DirectoryEntry();
de.Path = "LDAP://domainB.com";
de.AuthenticationType = AuthenticationTypes.None;
DirectorySearcher search = new DirectorySearcher(de);
search.Filter = "(SAMAccountName=" + account + ")";
search.PropertiesToLoad.Add("displayName");
SearchResult result = search.FindOne();
因为我的服务器在 domainA 中,所以这不起作用。有没有办法让我知道服务器在域A中查询域B?我发现一篇文章说需要为域 A 和 B 设置信任,但不应链接此域。只有这个应用程序才需要这个功能。
附:我可能忘了解释一个重要的细节。域A 和B 不在同一个网络上。但是domainA可以ping domainB
【问题讨论】:
-
如果不允许域之间的信任,您需要为域 B 中的用户提供凭据到 DirectoryEntry 构造函数或使用模拟。这意味着您必须为域 B 中的用户存储/请求用户名和密码
-
@oldovotes 伤心没用......我收到“服务器无法运行”错误。这是尽可能通用的。知道为什么吗?
-
@oldovets 我可能忘了解释一个重要的细节。域A 和B 不在同一个网络上。但是domainA可以ping domainB
-
您能否通过 FQDN (domainB.com) ping 域 B?您是否能够通过来自 domainA 的 FQDN ping domainB 中的域控制器?似乎是网络问题,与 DNS 服务器有关。
-
@oldovets Sent 4 收到 2. ping domainB.com 丢失 50%
标签: c# asp.net iis active-directory ldap