我需要什么来连接到LDAP,并绑定到更“一般”的DN来search用户?

我遇到了一个我从未真正遇到过的问题,即从NodeJS应用程序连接到LDAP。 到现在为止,我甚至不知道有一个LDAP这样的东西,所以我一直在学习。 这就是为什么这可能是一个愚蠢的问题,但我还没有find任何简洁的答案。

这个要求是: “用你的应用程序login到你的应用程序中,用户和你的login屏幕上提供的通行证” 。 客户端有一个LDAP,并且想要使用它来validation我们的应用程序的用户,所以用户login屏幕上input的用户名和密码用于尝试login到LDAP。

我知道我需要三件东西来连接到LDAP:

  • 服务器的URL
  • 用户(通过)
  • 和一个DN绑定

我目前使用ldapjsldapjs进行连接。 我需要用来validation用户的操作,我知道, 这是bind操作 。 为此,我需要创build服务器(已经完成,没有问题),并通过DN和密码。 我假设DN包含用户。 就像是

CN=myuser,OU=MyOrg,OU=Users,DN=MyLdapServer,DN=com

哪些工作… 只要用户属于同一个“分支” 。 也就是说,如果他们都在,比如OU=MyOrg 。 这就是为什么我能够在bind()对DN进行“硬编码”,只需要用replace来改变用户。

问题是,并不是所有的人都属于同一个“分支”(我不知道这个技术名称)。 说,我有一些在OU=MyOrg ,一些在OU=MyOtherOrg

所以我不知道用户的组织是什么,所以我不能让他绑定到LDAP客户端,因为我缺lessDN。

客户端仅向我们提供了一个例子,使用ASP.NET和ADO.NET这样的另一个应用程序,使用类似于SQL命令的方式获取LDAP信息。 事情是,相当于DN是一个更通用的。 就像是

ldap://MyLdapServer.com/CN=[the_user_provided]

这显然是有效的。 如果我尝试做同样的事情,使用更多的“通用”DN路由(我假设它是LDAP树上的一个更高的节点),提供其中一个用户的密码,我得到一个authentication错误。

那么,怎么样? 我错过了什么? 只需使用“CN = [username]”DNlogin用户到LDAP,我需要什么? 那是只有ADO.NET可以使用的东西吗?

谢谢,抱歉,如果这是一个太普通的问题。

根据我所做的评论:

要绑定到Active Directory,您不需要知道用户的完整DN。 文档中的此页面上列出了所有不同的可用方法。 所以你可以使用user@domain.com作为例子。 或者只是提供的用户名将在大多数情况下工作。