Erro ao tentar adicionar usuário no LDAP: error code 65 - no structural object class provided

2 respostas
Roger75

Alguém já viu esse erro, ao tentar adicionar um usuário no LDAP?

javax.naming.directory.SchemaViolationException: [LDAP: error code 65 - no structural object class provided]

Meu código está parecido com isto:

public static void mani(String[] args){
    InitialContext ctx = getLDAPContext(
                  "cn=directory manager","password","hostname:389");        
     bindEntry((DirContext)ctx);  
  }
  
  
  public static void bindEntry(DirContext dirContext)
        throws Exception{
        Attributes matchAttrs = new BasicAttributes(true);
        matchAttrs.put(new BasicAttribute("uid", "defaultuser"));
        matchAttrs.put(new BasicAttribute("cn", "defaultuser"));           
        matchAttrs.put(new BasicAttribute("givenname", "defaultuser"));           
        matchAttrs.put(new BasicAttribute("sn", "defaultuser"));           
        matchAttrs.put(new BasicAttribute("userpassword", "password"));         
        matchAttrs.put(new BasicAttribute("objectclass", "top"));         
        matchAttrs.put(new BasicAttribute("objectclass", "person"));         
        matchAttrs.put(new BasicAttribute("objectclass", "organizationalPerson"));         
        matchAttrs.put(new BasicAttribute("objectclass","inetorgperson"));              
        String name="uid=defaultuser";
        InitialDirContext iniDirContext = (InitialDirContext)dirContext;
        iniDirContext.bind(name,dirContext,matchAttrs);
    }
    
    
    private static InitialContext getLDAPContext(String dn, 
                String userpassword, String server) throws Exception
        {
            String baseDN = "dc=webselfcare,dc=com";
            Properties props = new Properties();
            props.put(Context.INITIAL_CONTEXT_FACTORY, 
                    "com.sun.jndi.ldap.LdapCtxFactory");
            props.put(Context.PROVIDER_URL, "ldap://" + server + "/" + baseDN);
            props.put(Context.SECURITY_CREDENTIALS, userpassword);
            props.put(Context.SECURITY_PRINCIPAL, dn);
            return new InitialDirContext(props);
    }

2 Respostas

fabioqb

Qual seu LDAP? É um MS-AD ou outro? Verificou se a estrutura objectclass está de acordo ?

Roger75

Deixei somente o objectclass inetorgperson e parece que foi agora…

Criado 13 de julho de 2012
Ultima resposta 14 de jul. de 2012
Respostas 2
Participantes 2