2010-02-23 8 views
3

Nous avons essayé d'ajouter des utilisateurs à des groupes utilisant JNDI. Notre serveur d'annuaire est Active Directory sous Windows 2003.JNDI Ajouter des utilisateurs à des groupes avec ADS

Nous avons été en mesure de créer des utilisateurs et des groupes très bien. Cependant, faire de ces utilisateurs une partie de n'importe quel groupe est un problème. Voici ce que le code ressemble (inspiré par this):

ModificationItem mod[] = new ModificationItem[1]; 
mod[0] = new ModificationItem(DirContext.ADD_ATTRIBUTE, 
       new BasicAttribute("member", "CN=User1,OU=LocationOfUser")); 
localcontext.modifyAttributes("CN=Group1,ou=Group,ou=LocationOfTheGroup", mod); 

Nous obtenons cette erreur de retour:

javax.naming.NameNotFoundException: [LDAP: error code 32 - 00000525: 
NameErr: DSID- 031A0F80, problem 2001 (NO_OBJECT), data 0, best match of: '' 

Nous avons essayé de se lier à un sous-racine (et ne pas donner la pleine DN dans la attributs) ou de liaison à la racine (et donnant le DN complet dans les attributs).

EDIT: Nous avons essayé le même code, mais avec un utilisateur dans le CN Users (CN=abcd,CN=Users), et cela fonctionne !!! Mais comment se fait-il que cela ne le permette pas aux utilisateurs en dehors de cela?

+0

Je vous suggère de modifier la question à "Erreur de connexion à ADS via JNDI" parce que votre problème est d'obtenir la connexion, pas d'ajouter des utilisateurs. –

+0

Nous n'avons aucun problème à nous connecter ... Le problème est d'ajouter l'utilisateur au groupe. – malaverdiere

Répondre

0

L'erreur indique "NO_OBJECT". Le code d'erreur 32 est LDAP_NO_SUCH_OBJECT. Donc, le problème est que l'un des identifiants est faux. Pouvez-vous lister l'utilisateur ou le groupe avec l'identifiant spécifié? Le message d'erreur indique best match of: '', ce qui signifie qu'il ne peut correspondre à aucune partie du chemin (le DN), pas même le premier élément. Je suppose que vous devez utiliser le chemin complet dans votre cas (à partir de la racine) au lieu d'un RDN.

Je n'ai pas d'explication pourquoi vous pouvez trouver les objets avec des requêtes directes, cependant. Il doit y avoir quelque chose de différent mais à moins de poster tout le code, c'est à peu près tout ce que je peux faire.

+0

Oui, je suis capable d'utiliser les deux DN pour tirer l'objet, mais pas pour l'assigner à un groupe ... – malaverdiere

Questions connexes