2011-04-26 120 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作爲它的子上下文。