Question

Je suis en train d'ajouter une entrée à un serveur LDAP à l'aide JNDI. Je pouvais lire avec succès les entrées du serveur LDAP. Mais lorsque je tente d'ajouter une nouvelle entrée, je reçois les erreurs. J'ai vérifié diverses manières, mais je ne ai pas.

    private String getUserAttribs (String searchAttribValue) throws NamingException{
    SearchControls ctls = new SearchControls();
    ctls.setSearchScope(SearchControls.OBJECT_SCOPE);

    Attributes matchAttrs = new BasicAttributes(true);
    matchAttrs.put(new BasicAttribute("uid", searchAttribValue));
    NamingEnumeration answer = ctx.search("ou=People,ou=ABCLdapRealm,dc=abcdomain",matchAttrs);

    SearchResult item =(SearchResult) answer.next();
    // uid userpassword description objectclass wlsmemberof sn cn
    return item.toString();
}

Cela a fonctionné correctement.

Ensuite, je me suis déplacé un pas en avant et essayé d'ajouter une entrée. Le code est le suivant.

    public static void bindEntry(DirContext dirContext)throws Exception{
    Attributes matchAttrs = new BasicAttributes(true);
    // uid userpassword description objectclass wlsmemberof sn cn
    matchAttrs.put(new BasicAttribute("uid", "defaultuser"));
    matchAttrs.put(new BasicAttribute("userpassword", "password"));
    matchAttrs.put(new BasicAttribute("description", "defaultuser"));
    matchAttrs.put(new BasicAttribute("cn", "defaultuser"));
    matchAttrs.put(new BasicAttribute("sn", "defaultuser"));

    matchAttrs.put(new BasicAttribute("objectclass", "top"));
    matchAttrs.put(new BasicAttribute("objectclass", "person"));
    matchAttrs.put(new BasicAttribute("objectclass", "organizationalPerson"));
    matchAttrs.put(new BasicAttribute("objectclass","inetorgperson"));
    matchAttrs.put(new BasicAttribute("objectclass", "wlsUser"));
    String name="uid=defaultuser";
    InitialDirContext iniDirContext = (InitialDirContext)dirContext;
    iniDirContext.bind(name,dirContext,matchAttrs);
}

Mais avec ce que je reçois une exception.

Exception in thread "main" javax.naming.OperationNotSupportedException: [LDAP: error code 53 - Unwilling To Perform]; remaining name 'uid=defaultuser'

Certainement je viole quelque chose. Toute idée sur ce sujet?

Était-ce utile?

La solution

LDAP 53, incapable d'exécuter, signifie généralement ce qu'il dit. Vous avez essayé de le faire du point de vue des serveurs LDAP quelque chose « illégal ».

Première hypothèse, peu probable cependant, vous montre du doigt eDirectory? Dans ce cas, l'ajout sn est important car il est obligatoire dans le schéma de eDirectory pour fournir une valeur de nom de famille à créer le temps. Dans ce cas, vous auriez probablement une erreur légèrement différente, plus comme une erreur 608 ou 611.

conjecturer, vous êtes point Active Directory, auquel cas fullName est un attribut obligatoire. Mais dans ce cas, vous habituellement obtenez également un code différent de façon légèrement résultat. AURAIT avoir plus dans l'erreur. (Bien que cela pourrait être le retour de JNDI par rapport aux outils que je suis habitué trop).

Troisième hypothèse, vous pointez quelqu'un d'autre serveur LDAP et que vous avez manqué un attribut obligatoire dans le schéma.

En fait, peut-être est une question de classe d'objets. Est-wlsUser une classe auxiliaire, ou une vraie classe? Est-inetorgperson une vraie classe (je suis sur le nom BLANKING pour ce type de classe, il est aux, structure, et autre chose) dans votre répertoire?

Je pense de base que vous avez manqué un attribut obligatoire et violez schéma dans votre répertoire cible, et j'espère que les exemples possibles de manque obligatoires ÉNUMÉRÉ ci-dessus est utile.

Autres conseils

Ceci est l'erreur que vous obtenez lorsque vous essayez de définir le mot de passe dans Active Directory via une connexion non-SSL. Essayez de nouveau votre code sans la ligne de mot de passe.

Salut en utilisant le code ci-dessous je suis en mesure d'insérer une personne dans ldap du programme JNDI

Attributes attributes=new BasicAttributes();
Attribute objectClass=new BasicAttribute("objectClass");
objectClass.add("inetOrgPerson");
attributes.put(objectClass);

Attribute sn=new BasicAttribute("sn");
Attribute cn=new BasicAttribute("cn");

sn.add("sahul");
cn.add("vetcha");

attributes.put(sn);
attributes.put(cn);
attributes.put("title","software engg")
ctx.createSubcontext("uid=sahul,ou=some organization7,o=some company7,ou=system",attributes);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top