使用 LDAP 对 ADAM 进行身份验证

Posted

技术标签:

【中文标题】使用 LDAP 对 ADAM 进行身份验证【英文标题】:Authenticating against ADAM using LDAP 【发布时间】:2013-06-28 19:49:23 【问题描述】:

我正在尝试使用 ADAM 和 LDAP 进行身份验证。我真的没有这方面的经验,但我一直在工作中陷入困境以解决这个问题。

这就是我所知道的。我正在使用一个名为 JXplorer 的程序来查看在我计算机上的 VM 上运行的 ADAM 服务器。 Here are the login details

这非常有效。我想要做的是使用 VB.NET 复制这个过程。我尝试了很多东西,但似乎没有任何效果,我不断收到异常,从密码错误到未知错误。这是我开始使用的代码 -

Dim userName As String = "ADAM_TESTER"
Dim userPassword As String = "password"
Dim serverAddress As String = "LDAP://10.0.0.142:389"

Private Sub Main_Load(sender As Object, e As EventArgs) Handles MyBase.Load

    Try
        Dim de As DirectoryEntry = New DirectoryEntry("LDAP://10.0.0.142:389/OU=Users,DC=TEST,DC=corp", userName, userPassword)
        Dim deSearch As DirectorySearcher = New DirectorySearcher()
        deSearch.SearchRoot = de
        deSearch.Filter = "(&(objectClass=user) (cn=" + userName + "))"
        Dim results As SearchResultCollection = deSearch.FindAll()
        If (results.Count > 0) Then
            Dim d As DirectoryEntry = New DirectoryEntry(results(0).Path, userName, userPassword)
            If (d.Guid.ToString IsNot Nothing) Then
                'The directory entry is valid
                'DoSomething()
            End If

        End If

我还尝试将上面的用户名更改为 JXplorer 中用户 DN 中的详细信息。我真的被困在这里并且一直在寻找答案几个小时。

任何帮助将不胜感激。

【问题讨论】:

【参考方案1】:

仅供参考,用户是一个容器,而不是 OU。我相信您也可以使用“LDAP://10.0.0.142:389/CN=Users,DC=TEST,DC=corp”

【讨论】:

【参考方案2】:

几乎可以肯定,userName 需要成为完整的 DN。在大多数情况下,ADAM 需要一个完整的 DN 来登录。

【讨论】:

【参考方案3】:

感谢杰夫的想法,我终于想通了。事实证明,我需要不包括 OU=Users 的连接字符串。最后的字符串最终是 -

LDAP://10.0.0.142:389/DC=TEST,DC=corp

我不知道为什么它不想要 OU=Users。我花了大约一天的时间尝试所有不同的组合,直到最终被接受。

【讨论】:

以上是关于使用 LDAP 对 ADAM 进行身份验证的主要内容,如果未能解决你的问题,请参考以下文章

使用 JWT Auth 对 LDAP 服务进行身份验证

使用 python + ldap 对活动目录进行身份验证

使用 Spring Boot/Spring Security 对 LDAP 进行证书身份验证

Worklight 6.2 使用 OpenDS 对 LDAP 进行身份验证

无法针对 ADAM 对 SharePoint Extranet 站点进行身份验证

LDAP JBoss 和 Drupal 身份验证