2016-08-23 47 views
1

我有一个关于以前从未真正遇到的问题,即从NodeJS应用程序连接到LDAP。直到现在,我甚至都不知道LDAP是如此的东西,所以我一直在学习。这就是为什么这可能是一个愚蠢的问题,但我还没有找到任何简洁的答案。我需要连接到LDAP,并绑定到更“一般”的DN来搜索用户?

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

我明白,我需要三样东西连接到LDAP:

  • 服务器的URL
  • 用户(与通)
  • 而一个DN绑定到

我目前使用ldapjs从NodeJS进行连接。我需要用来验证用户的操作,我明白,it's the bind operation。为此,我需要创建服务器(已经完成,并且没有问题)并传递dn和密码。我假设DN包含用户。像

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

其中一期工程... 东西提供的用户属于同一个“分支”。也就是说,如果它们全部都在,例如OU=MyOrg。这就是为什么我能够在bind()中对DN进行“硬编码”,只需更换用户即可。

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

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

客户端仅向我们提供了一个示例,使用ASP.NET和ADO.NET这样的另一个应用程序使用类似SQL命令的内容来获取LDAP信息。事情是,相当于DN是一个更通用的。喜欢的东西

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

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

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

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

+1

要与Active Directory绑定,您不需要知道用户的完整DN。 [此文档中的文档]中提供了所有不同可用方法的列表(https://msdn.microsoft.com/zh-cn/library/cc223499.aspx)。所以你可以使用'user @ domain.com'作为例子。或者只是提供的用户名将在大多数情况下工作。 – ChadSikorra

+0

@ChadSikorra:是的,那实际上是解决方案。谢谢。 – Heathcliff

+0

@ChadSikorra:如果你想发布这个答案作为一个单独的答案,所以我可以将其标记为正确答案。 – Heathcliff

回答

1

每我提出的意见:

要与你不需要知道用户的完整DN的Active Directory绑定。 this page in the docs上列出了所有不同的可用方法。因此,您可以使用[email protected]作为示例。或者只是提供的用户名将在大多数情况下工作。