2011-04-26 119 views
0

我在我的jboss-conf.xml中有以下配置,我使用代码在LDAP中创建一个新用户。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> 

创建子环境,如:

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); 

其中记录打印出来:createUserAttr: uid=test,ou=users

能否请你告诉我,为什么我仍然收到这个异常?

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' 

回答

0

这里有一个循环。您似乎试图使用uid = root,ou = users,dc = Product,DC = Ghost,DC = COM作为登录DN来更改目录,并且您还在编写代码来创建此用户。这是如何工作的?

如果以某种方式起作用,错误仅仅意味着由getLdapConnection()返回的上下文不能包含RDN uid = root,ou = users。我认为你必须在这里提供一个单一部分的RDN,所以你应该导航到'用户'的上下文,并创建uid = root作为它的子上下文。