2011-04-26 4 views
0

J'ai la configuration suivante dans mon jboss-conf.xml que j'utilise dans le code pour créer un nouvel utilisateur dans LDAP.Problème de connexion ldap

<login-module code="org.jboss.security.auth.spi.LdapExtLoginModule" flag="required" > 
     <module-option name="debug">true</module-option> 
     <module-option name="java.naming.factory.initial">com.sun.jndi.ldap.LdapCtxFactory</module-option> 
      <module-option name="java.naming.security.authentication">simple</module-option> 
      <module-option name="pwdChangeAttr">pwdattribute</module-option> 
     <!-- number that represents (busnessUser|nonBusinessUser) and (inactive|active|discarded) - uses bitwise--> 
     <module-option name="userType">employeeType</module-option> 
      <module-option name="java.naming.provider.url">ldap://devhost-ldap.ghost.com:10389</module-option> 
      <module-option name="bindDN">uid=root,ou=users,dc=Product,DC=Ghost,DC=COM</module-option> 
      <!--module-option name="jaasSecurityDomain">jboss.security:service=JaasSecurityDomain,domain=jmx-console</module-option--> 
      <!--module-option name="bindCredential">1hzUmi4rjRZcWdVFqoh7FD</module-option--> 
      <module-option name="bindCredential">GhostCredential</module-option> 
      <module-option name="rolesDn">ou=groups</module-option> 
      <module-option name="usersDn">ou=users</module-option> 
      <module-option name="objectClass">groupOfNames</module-option> 
    <module-option name="baseCtxDN">dc=product,dc=ghost,dc=com</module-option> 
    <module-option name="baseFilter">(uid={0})</module-option> 
    <module-option name="rolesCtxDN">dc=Product,dc=ghost,dc=com</module-option> 
    <module-option name="roleFilter">(member={1})</module-option> 
    <module-option name="roleAttributeID">cn</module-option> 
    <module-option name="roleRecursion">-1</module-option> 
    <module-option name="searchScope">SUBTREE_SCOPE</module-option> 
    <module-option name="defaultRole">Authenticated</module-option> 
    <module-option name="allowEmptyPasswords">false</module-option> 
    </login-module> 

Je crée comme sous-contexte:

createUserAttr.append(userAttrName).append(ASSIGNMENT_OPERATER) 
       .append(userUid).append(COMMA_SEPARATER) 
       .append(commonNameAttribute).append(ASSIGNMENT_OPERATER) 
       .append(userDistinguishedName); 
     logger.info("createUserAttr: " + createUserAttr.toString()); 
     getLdapConnection().createSubcontext(createUserAttr.toString(), 
       atrs); 

où les impressions de l'enregistreur sur: createUserAttr: uid=test,ou=users

Pouvez-vous s'il vous plaît me dire pourquoi je reçois encore cette exception?

An exception has occured when trying to create an LDAP user javax.naming.NameNotFoundException: 
[LDAP: error code 32 - The provided entry uid=test,ou=users cannot be added because its suffix is not defined as one of the suffixes within the Directory Server]; remaining name 'uid=root,ou=users' 

Répondre

0

Il y a une circularité ici. Vous semblez essayer d'utiliser uid = root, ou = utilisateurs, dc = Product, DC = Ghost, DC = COM en tant que DN de connexion pour apporter des modifications au répertoire, et vous écrivez également du code pour créer cet utilisateur. Comment cela va-t-il fonctionner?

Si cela fonctionne, l'erreur signifie simplement que le contexte renvoyé par getLdapConnection() ne peut pas contenir le RDN uid = root, ou = users. Je pense que vous devez simplement fournir un RDN à partie unique ici, vous devez donc naviguer vers le contexte 'users' et créer uid = root comme sous-contexte de cela.

Questions connexes