Spring LDAP:InvalidNameException:/:[LDAP:错误代码34 [英] Spring LDAP: InvalidNameException: /: [LDAP: error code 34
本文介绍了Spring LDAP:InvalidNameException:/:[LDAP:错误代码34的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我在验证用户身份时遇到以下异常:
I am getting following exception while authenticating a user:
如果我在applicationContext中使用这样的值:
If I use values in applicationContext like this:
<property name="url" value="ldap://10.10.10.10:389/DC=lab2,DC=ins" />
<property name="base" value="DC=lab2,DC=ins" />
<property name="userDn" value="CN=Ldap Bind,OU=Service Accounts,OU=TECH,DC=lab2,DC=ins" />
例外将是:
Exception in thread "main" org.springframework.ldap.InvalidNameException: /: [LDAP: error code 34 - 0000208F: NameErr: DSID-031001BA, problem 2006 (BAD_NAME), data 8349, best match of:
'DC=lab2,DC=ins/dc=lab2,dc=ins'
否则,如果应用程序上下文是这样的:
else if application context like this:
<property name="url" value="ldap://10.10.10.10:389" />
<property name="base" value="DC=lab2,DC=ins" />
<property name="userDn" value="CN=Ldap Bind,OU=Service Accounts,OU=TECH,DC=lab2,DC=ins" />
例外将是:
Exception in thread "main" org.springframework.ldap.PartialResultException: nested exception is javax.naming.PartialResultException [Root exception is javax.naming.CommunicationException: lab2.ins:389 [Root exception is java.net.UnknownHostException: lab2.ins]]
at org.springframework.ldap.support.LdapUtils.convertLdapException(LdapUtils.java:205)
身份验证方法:
public boolean authenticate(String userName, String password) {
AndFilter filter = new AndFilter();
filter.and(new EqualsFilter("objectclass", "person")).and(
new EqualsFilter("sAMAccountName", userName));
return ldapTemplate.authenticate(DistinguishedName.EMPTY_PATH, filter
.toString(), password);
}
Applicationcontext.xml
Applicationcontext.xml
<bean id="contextSource"
class="org.springframework.ldap.core.support.LdapContextSource">
<property name="url" value="ldap://10.10.10.10:389" />
<property name="base" value="DC=lab2,DC=ins" />
<property name="userDn" value="CN=Ldap Bind,OU=Service Accounts,OU=TECH,DC=lab2,DC=ins" />
<property name="password" value="secret" />
<property name="baseEnvironmentProperties">
<map>
<entry key="java.naming.referral">
<value>follow</value>
</entry>
</map>
</property>
</bean>
<bean id="ldapTemplate" class="org.springframework.ldap.core.LdapTemplate">
<constructor-arg ref="contextSource" />
</bean>
<bean id="ldapContact"
class="ldap.ContactLDAP ">
<property name="ldapTemplate" ref="ldapTemplate" />
</bean>
testClass:
testClass:
Resource r = new ClassPathResource("applicationContext.xml");
BeanFactory factory = new XmlBeanFactory(r);
ContactLDAP contact = (ContactLDAP) factory.getBean("ldapContact");
System.out.println(contact.authenticate("username", "secret"));
我在这里想念什么?
推荐答案
可分辨名称中有一个斜杠/
字符.尽管这是DN中的合法字符,但也许应该是逗号
.另请参见专有名称
There is a slash /
character in the distinguished name. While this is a legal character in a DN, perhaps it should be a comma ,
. See also Distinguished Names
这篇关于Spring LDAP:InvalidNameException:/:[LDAP:错误代码34的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文