2017-08-12 2 views
0

I ont une structure de répertoire queConfiguration LDAP Base Spring

ou=studentBase,dc=example,dc=com 

Dans mon XML de sécurité Je

<bean id="contextSource" class="org.springframework.ldap.core.support.LdapContextSource"> 
    <property name="base" value="ou=studentBase,dc=example,dc=com" /> 
    <property name="url" value="ldaps://serveraddress:port" /> 
    <property name="userDn" value="username" /> 
    <property name="password" value="pwd" /> 
</bean> 

Je suppose que d'interroger les attributs de l'objet conteneur

cn=container,cn=schema,cn=configuration,dc=example,dc=com 

Lorsque Je recherche avec base réglé à

cn=container,cn=schema,cn=configuration,dc=example,dc=com 

ldapTemplate.search(base, filter.encode(), new AttributesMapper()){ 
} 

Je reçois une erreur

org.springframework.ldap.NameNotFoundException: [LDAP: error code 32 - 0000208D: NameErr: DSID-03100238, problem 2001 (NO_OBJECT), data 0, best match of: 'ou=studentBase,dc=example,dc=com']; nested exception is 
javax.naming.NameNotFoundException: [LDAP: error code 32 - 0000208D: NameErr: DSID-03100238, problem 2001 (NO_OBJECT), data 0, best match of: 
    'ou=studentBase,dc=example,dc=com']; remaining name cn=container,cn=schema,cn=configuration,dc=example,dc=com 

Le problème est que je ne peux pas changer la base pour rechercher autre chose que la base que je mets dans le fichier de configuration XML. J'ai aussi essayé SearchControls et j'ai eu le même problème. Comment puis-je effectuer une recherche sur une base différente? J'ai écrit l'ensemble de l'application et ne peux pas tourner autour de ce problème.

Répondre

0

Vous devez ajouter une autre contextSource pour les recherches de configuration:

<bean id="schemaContextSource" class="org.springframework.ldap.core.support.LdapContextSource"> 
    <property name="base" value="cn=configuration,dc=example,dc=com" /> 
    <property name="url" value="ldaps://serveraddress:port" /> 
    <property name="userDn" value="username" /> 
    <property name="password" value="pwd" /> 
</bean> 

et assurez-vous que le userDN vous utilisez est autorisé à afficher/modifier la configuration en ligne, qui devrait pas être le même utilisateur que pour contextSource, pour des raisons de sécurité.

Mais je trouve cela très étrange qu'une application devrait vouloir faire cela.