Printemps LDAP: InvalidNameException: /: [code d'erreur LDAP: 34
Je suis arriver suivantes exception lors de l'authentification d'un utilisateur:
Si j'utilise des valeurs dans applicationContext comme ceci:
<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 sera:
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'
d'autre si le contexte de l'application comme ceci:
<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 sera:
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)
Méthode d'authentification:
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
<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:
Resource r = new ClassPathResource("applicationContext.xml");
BeanFactory factory = new XmlBeanFactory(r);
ContactLDAP contact = (ContactLDAP) factory.getBean("ldapContact");
System.out.println(contact.authenticate("username", "secret"));
Ce qui me manque ici?
Vous devez vous connecter pour publier un commentaire.
Il y a un slash
/
de caractères dans le nom unique. Tout ceci est un caractère dans un nom de domaine, il faudrait peut-être une virgule,
. Voir aussi Des Noms IllustresVous n'avez pas besoin
Comme dans UserDn, vous avez déjà mis le DN complet.
Cela devrait fonctionner. (Mais je vous conseille d'éviter les espaces dans le nom unique (DN)