The*_*ost 5 c# asp.net iis ldap active-directory
所以继承我的问题.我有一个带有基于表单的身份验证的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();
Run Code Online (Sandbox Code Playgroud)
这段代码很好用.问题是客户端请求域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();
Run Code Online (Sandbox Code Playgroud)
由于我的服务器在域A中,这不起作用.知道服务器在domainA中,有没有办法让我查询domainB?我发现一篇文章说要为domainA和B设置信任,但这个域名不应该被链接.它仅适用于此应用程序,因此需要此功能.
PS我可能忘了解释一个重要的细节.domainA和B不在同一网络上.但是domainA可以ping通domainB
小智 1
在尝试针对外部域的示例时,我注意到在使用错误的身份验证类型时,外部 DC 会给出错误消息“服务器不可用”。请尝试:
de.User = @"DOMAINB\user";
de.Password = "YourPassword";
de.AuthenticationType = AuthenticationTypes.None;
Run Code Online (Sandbox Code Playgroud)
当然,这会导致不安全的 BASIC 简单绑定,从而删除 ADSI 可能提供的任何加密。如果这有效,您应该尝试服务器接受的更安全的身份验证类型。
另一种方法可能是使用“System.DirectoryServices.Protocols”命名空间,它为 AD 访问提供了更轻量级的方法。如果你想朝这个方向发展,我可以为你提供一个样本。
| 归档时间: |
|
| 查看次数: |
466 次 |
| 最近记录: |