Active directory 如何转义LDAP dn进行查找?
我有一个小脚本(spring/groovy/ldap),可以在Active Directory中找到一个人下面的“管理树” i、 e.从“root person”中,脚本查找root person的直接下属,然后使用递归:对于每个直接下属,查找其直接下属,等等 directReports用户属性以以下形式指定DN的列表:Active directory 如何转义LDAP dn进行查找?,active-directory,ldap,spring-ldap,Active Directory,Ldap,Spring Ldap,我有一个小脚本(spring/groovy/ldap),可以在Active Directory中找到一个人下面的“管理树” i、 e.从“root person”中,脚本查找root person的直接下属,然后使用递归:对于每个直接下属,查找其直接下属,等等 directReports用户属性以以下形式指定DN的列表: CN=Simpson\, Homer,OU=OU_0731DevOps,OU=OU_0100Monitor Services,OU=OU_0001U*Nuclear Energ
CN=Simpson\, Homer,OU=OU_0731DevOps,OU=OU_0100Monitor Services,OU=OU_0001U*Nuclear Energy Corporation,OU=OU_UNuclearUsers,DC=corp,DC=unucleargrp,DC=com
该脚本按DN为每个直接报告执行“ldap查找”,例如:
obj = ldapTemplate.lookup(pDn, new UserAttributesMapper())
问题
ldap查找引发InvalidNameException
[LDAP:错误代码34-0000208F:LDAPPER:DSID-0C090787
我尝试了各种转义组合,但仍然出现错误
我错过了什么
更多信息
此url/5312.active-directory-characters-to-escape.aspx显示要转义的字符:
Active Directory要求对以下十个字符进行转义
使用反斜杠“\”转义字符,如果它们出现在
可分辨名称的各个组成部分:
逗号,
反斜杠字符\
磅符号(散列符号)#
加号+
小于符号<
大于符号>
分号;
双引号(引号)”
等号=
前导或尾随空格
工具
- 棒极了
- 弹簧靴
- 虚拟机
谢谢!我用LDAPNameBuilder找到了答案 TLDR: ldapTemplate.lookup需要剥离DN的“DC..”部分。* 如果您知道更干净/更正式的解决方案,请发布 LDAP查找失败,DN如下: 此DN具有“DC=…”组件,使用spring ldap查找失败
CN=Simpson\, Homer,OU=OU_0731DevOps,OU=OU_0100Monitor Services,OU=OU_0001U*Nuclear Energy Corporation,OU=OU_UNuclearUsers,DC=corp,DC=unucleargrp,DC=com
LDAP成功完成此操作(无“DC”组件):
此DN没有“DC=”组件。Spring LDAP模板提供basedn。
CN=Simpson\,荷马,OU=OU_0731DevOps,OU=OU_0100监控服务,OU=OU_0001;*核能公司
上下文提醒
此应用程序遍历“管理树”。它通过“directReports”属性(列出每个直接报告的完整DN)获取人员管理。此应用程序希望通过其DN查找该用户
调整/示例
此调整使ldap查找工作正常:
User lookupUserByDn(String pDn) {
// needed this to get it to work
String dn=pDn.replace(",${ldapConfig.base}","")
ldapTemplate.lookup(dn, new UserAttributesMapper())
}
作为记录,我的application.yml ldap部分如下所示:
spring:
ldap:
urls: ldap://dc.corp.unucleargrp.com:389
base: DC=corp,DC=unucleargrp,DC=com
username: username_val
password : password_val
据此,
删除基本属性后,所有来回的操作都将使用完整的DNs。这可能是配置文件中的问题,例如?
spring:
ldap:
urls: ldap://dc.corp.unucleargrp.com:389
base: DC=corp,DC=unucleargrp,DC=com
username: username_val
password : password_val