我有一个关于以前从未真正遇到的问题,即从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可以使用的东西吗?
谢谢,并对不起,如果它太笼统的问题。
要与Active Directory绑定,您不需要知道用户的完整DN。 [此文档中的文档]中提供了所有不同可用方法的列表(https://msdn.microsoft.com/zh-cn/library/cc223499.aspx)。所以你可以使用'user @ domain.com'作为例子。或者只是提供的用户名将在大多数情况下工作。 – ChadSikorra
@ChadSikorra:是的,那实际上是解决方案。谢谢。 – Heathcliff
@ChadSikorra:如果你想发布这个答案作为一个单独的答案,所以我可以将其标记为正确答案。 – Heathcliff