我有一个OpenLDAP部署,对某些属性(使用“唯一”覆盖图创建)具有唯一性约束,我已经使用ldapadd对其进行了测试并确认其正常工作。但是,当我使用org.springframework.ldap.core.LdapTemplate的“ bind”方法添加有冲突的条目时,将保存该条目而不进行验证。
这是应该发生的,还是我的环境之一有问题?并且如果应该发生这种情况,我如何获得spring-ldap来停止潜行经过唯一性约束?
这可能是由于OpenLDAP的已知问题,如果spring在添加条目时未显式添加RDN属性:
http://www.openldap.org/lists/openldap-bugs/201210/msg00065.html
Spring LDAP使用JNDI与LDAP服务器进行通信。默认情况下,JNDI发送ManageDsaIT控件。如果设置,OpenLDAP服务器将忽略唯一的覆盖。
您可以通过设置以下环境变量来禁用此行为:
java.naming.referral=throw
使用Spring Boot服务时,您可以设置:
spring.ldap.base-environment:
java.naming.referral: "throw"