我遇到过以前从未真正遇到的问题,即从NodeJS应用程序连接到LDAP。到现在为止,我甚至都不知道有这样的东西,所以我一直在学习。这就是为什么这可能是一个愚蠢的问题,但我没有找到任何简明的答案。
要求是:“使用用户登录到您的应用程序的LDAP并在登录屏幕中提供通行证”。客户端有一个LDAP,并希望使用它来验证我们的应用程序的用户,因此在我们的登录屏幕中输入的用户和密码用于尝试登录LDAP。
我知道我需要三件事才能连接到LDAP:
我目前正在使用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]
那么,为什么?我错过了什么?仅使用“CN = [用户名]”DN将用户登录到LDAP需要什么?这只是ADO.NET可以使用的东西吗?
谢谢,如果这个问题过于笼统,我很抱歉。
答案 0 :(得分:1)
根据我的评论:
要与Active Directory绑定,您无需知道用户的完整DN。 this page in the docs上列出了所有不同的可用方法。因此,您可以使用user@domain.com
作为示例。或者只是提供的用户名在大多数情况下都适用。