1

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

要求是:“使用用户从您的应用程序登录到 LDAP 并在您的登录屏幕中提供密码”。客户端有一个 LDAP,并希望使用它来验证我们应用程序的用户,因此在我们的登录屏幕中输入的用户和密码用于尝试登录 LDAP。

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

  • 服务器的 URL
  • 一个用户(有通行证)
  • 以及要绑定的 DN

我目前正在使用ldapjs从 NodeJS 连接。我需要用来对用户进行身份验证的操作,我理解,它是bindoperation。为此,我需要创建服务器(已经完成,没有问题)并传递 dn 和密码。我假设 DN 包括用户。就像是

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

哪个有效……前提是用户属于同一个“分支”。也就是说,如果他们都在,比如说,OU=MyOrg。这就是为什么我能够在 中“硬编码” DNbind()并通过替换来更改用户。

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

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

客户端仅向我们提供了一个示例,来自另一个使用 ASP.NET 和 ADO.NET 的应用程序,使用类似 SQL 命令的东西来获取 LDAP 信息。问题是,与 DN 等效的是一个更通用的。就像是

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

这显然奏效了。如果我尝试做同样的事情,使用更“通用”的 DN 路由(我假设它是 LDAP 树上更高的节点),提供用户密码之一,我会收到身份验证错误。

那么,怎么来的?我错过了什么?仅使用“CN=[用户名]”DN 将用户登录到 LDAP 需要什么?那是只有 ADO.NET 可以使用的东西吗?

谢谢,如果问题太笼统,对不起。

4

1 回答 1

1

根据我发表的评论:

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

于 2016-09-12T17:16:23.553 回答