1

对于 ASP.NET Web 应用程序,我无法使用 LDAP 成功验证用户。我已经在我们自己的网络上针对 Active Directory 执行此操作,但这是针对我们网络之外的 OID(Oracle Internet 目录)服务器。

通常,我使用以下代码没有问题。

Dim myDirectoryEntry As New System.DirectoryServices.DirectoryEntry("LDAP://1.2.3.4:999/OU=SomeOU,DC=Something,DC=com")
myDirectoryEntry.AuthenticationType = System.DirectoryServices.AuthenticationTypes.Sealing
myDirectoryEntry.AuthenticationType = System.DirectoryServices.AuthenticationTypes.Secure

Try
    myDirectoryEntry.Username = txtUserID.Text.Trim
    myDirectoryEntry.Password = txtPassword.Text.Trim

    Dim mySearcher As New System.DirectoryServices.DirectorySearcher(myDirectoryEntry)

    mySearcher.Filter = ("(anr= " & txtUserID.Text & ")")

    Dim result As System.DirectoryServices.SearchResult = mySearcher.FindOne
Catch ex As Exception
    'failed log in handling 
End Try

对于此应用程序,我将针对我们网络外部的目录,并且上述方法失败(服务器不支持请求的身份验证方法。)。

我可以使用以下方法成功绑定到 LDAP 服务器:

Dim serverName As String = "1.2.3.4:999"

Dim dn As String = "cn=somename,cn=users,dc=something,dc=gov"

Dim ServerCon As New LdapConnection(serverName)

ServerCon.AuthType = AuthType.Basic

Dim cred As New System.Net.NetworkCredential(dn, "password")

ServerCon.Bind(cred)

在那之后,我一直无法找到一种方法来使用他们的密码验证用户的登录信息,然后拉回一些信息。

4

1 回答 1

0

可能是服务器不支持 Kerberos 身份验证。当请求的身份验证方法不受支持并且无法设置连接的身份验证状态时,目录服务器必须返回您在响应中收到的错误代码。不受支持的 SASL 机制可能会发生这种情况;支持的 SASL 机制应该在根 DSE中列出。

于 2011-11-18T20:56:57.640 回答