2011-09-08 1 views
1

J'ai une connexion JNDI à un serveur LDAP (Active Directory dans ce cas). J'ai également ctx.extendedOperation(new StartTlsRequest()) pour obtenir une connexion sécurisée.Comment puis-je appliquer un LDAP bindRequest dans java en utilisant JNDI?

Sur cette connexion, je dois valider les informations d'identification. JE vous connecter en utilisant

ctx.addToEnvironment(Context.SECURITY_AUTHENTICATION, "simple"); 
ctx.addToEnvironment(Context.SECURITY_PRINCIPAL, principal); 
ctx.addToEnvironment(Context.SECURITY_CREDENTIALS, credentials); 

Cependant la commande « BindRequest » est délivré uniquement sur ldap lors de l'action suivante réalisée sur le contexte JNDI. Pourtant, il n'y a rien que je veux faire avec. J'ai juste besoin de vérifier les informations d'identification. Existe-t-il un moyen d'appliquer le "bindRequest"?

Sinon, dois-je utiliser mon propre NOP? Une recherche d'un objet inexistant ou dois-je interroger un attribut d'un objet existant ou ...? Il doit être rapide, il ne devrait pas créer de travail côté serveur et devrait utiliser le moins de bande passante possible. (Parce que, en fait, que l'action ne doit jamais être nessessary en premier lieu ...)

Cordialement, Steffen

Répondre

1

+0

Juste ce que je cherchais. Merci beaucoup. –

0

Autant que je comprends une solution est juste de chercher le principal dans le répertoire, ce qui a recherche avec un filtre comme:

(&(objectCategory=person)(sAMAccountName=principal)) 

Si principale est sous la forme: "user1"

(&(objectCategory=person)(userPrincipalName=principal)) 

Si principale est sous la forme: « user1 @ dom. fr "

+0

Pas la meilleure solution. – EJP

+0

Ok .... J'enlève le meilleur ... – JPBlanc

0

Pour votre action NO-OP, vous pouvez simplement rechercher le root DSE. Cela devrait être en mémoire sur le serveur. Si vous avez accès à la demande et à la réponse BIND, vous pouvez inclure le contrôle de demande d'identité d'autorisation dans la requête BIND. Si le serveur prend en charge ce contrôle de requête (auquel cas il sera listé dans la DSE racine), le serveur inclura le contrôle de réponse d'identité d'autorisation dans la réponse BIND. Ce contrôle de réponse sera l'identité d'authentification de la connexion. LdapContext.reconnect() effectue une liaison LDAP.

Questions connexes