用于验证LDAP服务器中用户的大多数代码示例如下所示:
Public Function Authenticate(ByVal userName As String, ByVal password As String) As Data.User
Dim root As DirectoryEntry = New DirectoryEntry("LDAP://" + _server, userName, password)
Dim search As DirectorySearcher = New DirectorySearcher(root)
Dim user As User = Nothing
search.SearchScope = SearchScope.Subtree
search.Filter = "(sAMAccountName=" + userName + ")"
Dim results As SearchResultCollection = search.FindAll()
If (Not (results Is Nothing)) Then
user = _GetUser(results(0).Path)
End If
Return user
End Function
我没有设置客户端的LDAP服务器。上述代码仅适用于管理员帐户。我注意到只有管理员才能在LDAP服务器上有效查询。这可能是安全问题的管理员的选择。这对我来说是合理的,但我不确定这是否是发生了什么的真正原因。
我用Google搜索了不同的解决方案,但其中大多数似乎与之前的代码相似。在我的情况下,我将尝试使用特殊的LDAP帐户在服务器上进行查询,并在登录后查找尝试进行身份验证的用户。
这是最好的方法吗?
答案 0 :(得分:0)
我认为你不应该两次查询,一次用于验证,另一次用于查询。 这是C#中的代码:
string directoryEntryFinalDetails =“LDAP:/// DC = xyz,DC = com”;
DirectoryEntry directoryEntry = new DirectoryEntry(directoryEntryDetails);
directoryEntry.AuthenticationType = AuthenticationTypes.Secure;
** directoryEntry.Username = General.DecryptedUserName;
directoryEntry.Password = General.DecryptedPassword; **
DirectorySearcher directorySearcher = new DirectorySearcher(directoryEntry);
DirectorySearcher directorySearcher = new DirectorySearcher(directoryEntry);
directorySearcher.Filter =“”;
foreach(DirectorySearcher.FindAll()中的SearchResult resultSet)
{
//your code
}
请告诉我这是否有帮助!!