2009-09-28 1 views
3

J'ai une application web (PHP, mais peu importe). Il utilise LDAP pour l'authentification (fonctionne déjà), et il permet aux utilisateurs de rechercher LDAP (qui fonctionne déjà). Mais lors de la recherche, j'utilise un compte de processus générique pour lier(), puis lancer la recherche().Est-ce que LDAP fournit un jeton après la liaison, donc je n'ai pas besoin d'envoyer des informations d'identification à chaque fois?

Ce que je voudrais est d'utiliser le compte LDAP qui se connecte pour être le même compte qui se lie à la recherche. Mais la seule façon de le faire est de stocker les informations d'identification de l'utilisateur dans les sessions (mauvais!).

Nutshell: puis-je obtenir un "état/session/??" jeton de LDAP, à bind(), puis search() sur les requêtes http suivantes?

(BTW, en utilisant Active Directory.)

Répondre

5

LDAP de base ne fournit pas quelque chose comme ça. Les informations d'identification que vous présentez lors de la liaison sont utilisées pour le reste de la connexion. Par conséquent, si vous pouviez conserver une connexion LDAP ouverte sur plusieurs requêtes HTTP (et partager des connexions LDAP entre plusieurs tâches serveur exécutées), vous pouvez éviter d'enregistrer des informations d'identification. . Il existe plusieurs extensions de LDAP qui circulent (dont plusieurs dans Active Directory), il est donc possible que l'une d'entre elles ajoute des sessions-across-connections, mais si c'est le cas, je ne suis pas au courant. En guise de solution de contournement, étant donné qu'Active Directory prend en charge GSSAPI et que Kerberos fonctionne, vous devez pouvoir utiliser les informations d'identification de l'utilisateur pour demander un ticket Kerberos pour accéder à LDAP, puis stocker ce ticket en tant qu'état /session/??" jeton. Ce ticket Kerberos ne serait valide que pour accéder à LDAP et expirerait automatiquement, ce qui éviterait les pièges liés au stockage des informations d'identification de l'utilisateur dans la session. Je ne sais pas si votre bibliothèque LDAP supporte GSSAPI et vous donnerait assez de contrôle pour le faire ou non.

+2

L'identité authentifiée n'est pas utilisée pour le "reste de la connexion", l'identité authentifiée est utilisée sur la connexion jusqu'à la prochaine liaison sur la connexion, en supposant que LDAPv3 est en cours d'utilisation. –

Questions connexes