J'essaie d'authentifier, puis à interroger notre LDAP d'entreprise à l'aide de Spring LDAP et de Security Spring. J'ai réussi à faire du travail d'authentification mais quand j'essaie de courir la recherche, j'ai toujours l'exception suivante
Pour effectuer cette opération, une liaison réussie doit être complétée sur la connexion p> BlockQuote>
Après de nombreuses recherches, j'ai une théorie qu'après que j'aurai authentifier et avant que je puisse interroger, j'ai besoin de se lier à la connexion. Je ne sais tout simplement pas quoi et comment? P>
Juste pour mentionner - je peux parcourir et rechercher notre LDAP à l'aide de JXplorer afin que mes paramètres sont corrects. P>
section de mon SecurityContext. XML P>
org.springframework.ldap.UncategorizedLdapException: Uncategorized exception occured during LDAP processing; nested exception is javax.naming.NamingException: [LDAP: error code 1 - 00000000: LdapErr: DSID-0C090627, comment: In order to perform this operation a successful bind must be completed on the connection., data 0, vece]; remaining name 'DC=TD,DC=FOO,DC=COM'
3 Réponses :
On dirait que votre LDAP est configuré pour ne pas autoriser une recherche sans se lier (pas de liaison anonyme). Vous avez également implémenté Vous pouvez essayer de modifier votre PasswordComparonaTuthentiCator code> et non
BindAuthenticator code> à authentifier à LDAP. p>
QueryemployesponsbyName () code> pour lier, puis recherchez quelques exemples dans le doc . p>
Ceci lit comme un commentaire, que suggérez-vous? Je sais que cela est possible car je peux utiliser JXplorer (qui est une application Java) pour se connecter et rechercher LDAP, je ne peux tout simplement pas comprendre comment se lier. Je pense que j'ai essayé Binauthenticator dans le passé et fini par la même exception
@ Droidln.net. Édité la réponse avec une suggestion explicite.
C'est très doc que j'avais l'habitude de coder l'authentification. Quand ils parlent se lient / entrentent, ils signifient insérer / supprimer des enregistrements dans cet exemple particulier
Je vais accepter @Raghuram répond principalement parce que cela m'a fait penser dans la bonne direction.
Pourquoi mon code a échoué? Il s'est avéré - la façon dont je l'ai câblée J'essayais d'effectuer une recherche anonyme qui est interdite par le système - d'où l'erreur. P>
Comment réveille l'exemple ci-dessus pour travailler? Première chose (et laidy chose à cela), vous devez fournir un nom d'utilisateur et un mot de passe de l'utilisateur qui sera utilisé pour accéder au système. Très contre-intuitif Même lorsque vous vous connectez et authentifiez, même si vous utilisez BindAuthenticator code> Système ne tentera pas de réutiliser vos informations d'identification. Dommage. Donc, vous devez coller 2 paramètres dans
CONTEXTSOURCE CODE> Définition Comme: P>
<bean id="contextSource" class="org.springframework.security.ldap.DefaultSpringSecurityContextSource">
<constructor-arg value="ldap://foo.com:389/dc=td,dc=foo,dc=com" />
<!-- TODO - need to hide this or encrypt a password -->
<property name="userDn" value="CN=admin,OU=Application,DC=TD,DC=FOO,DC=COM" />
<property name="password" value="blah" />
</bean>
Avez-vous défini les valeurs du userdn code> et
mot de passe code> sur les valeurs réelles? Je veux dire si je fais cela, tout le monde le verra en texte clair. Comment puis-je le lire par exemple à partir d'un formulaire de connexion?
J'ai la même erreur, je n'ai pas trouvé de solution. Enfin, j'ai changé l'identité du pool d'applications au service réseau et tout a fonctionné comme un charme. (J'ai une authentification Windows et Anonyme activé sur mon site) P>
Je sais que c'est vieux mais @bostone pouvez-vous m'aider à résoudre ce problème. Je reçois exactement la même exception, mais je reçois cette erreur sur la page de connexion où l'utilisateur entre d'abord des informations d'identification. Le LDAP revient avec succès lorsque le nom d'utilisateur et le mot de passe corrects sont entrés, mais je reçois la suite d'erreur: [LDAP: Code d'erreur 1 - 00000000: LDAPERR: DSID-0C090627, Commentaire: Pour effectuer cette opération, une liaison réussie doit être complétée sur la connexion. , données 0, vecefe]; Nom renvanant ''
@ user1647708 Voir ma réponse ci-dessous. Ça a fonctionné pour moi