2010-02-02 8 views
1

J'ai un code Java qui permet aux utilisateurs de réinitialiser leurs mots de passe stockés sur un serveur LDAP. Le code s'exécute dans le cadre d'une application Web s'exécutant sur Glassfish.Glassfish cache les mots de passe LDAP

Le problème que je vois est qu'après avoir appelé l'opération de changement de mot de passe, l'utilisateur peut ensuite utiliser un mot de passe pour accéder à l'application.

J'ai un test unitaire qui s'exécute directement sur le serveur LDAP et je peux vérifier que le mot de passe a bien changé et que l'utilisateur ne peut pas accéder à l'ancien mot de passe. Le problème n'est pas sur le serveur LDAP. Ce que j'ai remarqué est que si je redémarre Glassfish après l'opération de changement de mot de passe, seul le nouveau mot de passe est valide (comme prévu). Je suppose que Glassfish cache les informations d'identification quelque part.

Que dois-je mettre en Glassfish (ou peut-être dans mon web.xml) soit

  1. dire Glassfish ne pas mettre en cache les informations d'identification LDAP
  2. réinitialiser le cache de mot de passe Glassfish

Merci à l'avance ....

MISE à JOUR ayant encore ce problème. J'ai également pensé que le navigateur pourrait stocker cette information, mais cela ne semble pas être le cas. Je ferme la session de mon navigateur et les deux mots de passe fonctionnent toujours dans la nouvelle session, même avec différents types de navigateurs. BTW - Je ne sais pas si cela importe ou non, mais c'est l'authentification de base HTTP.

MISE À JOUR Nous utilisons également la fonctionnalité de signature unique incluse avec Glassfish. De this article, il semble que la session est liée à un cookie sur le navigateur et peut-être l'utilisateur serait valide jusqu'à ce que le cookie a expiré? Il semble que le cookie soit lié à une session. Se rapprocher de comprendre cela ....

+0

En voyant ce même problème, aimerait savoir si vous avez compris comment le résoudre. Il n'est pas lié à un cookie car nous utilisons un cookie de session (c'est-à-dire qu'il expire lorsque vous fermez le navigateur) et même après avoir redémarré le navigateur, il accepte l'ancien mot de passe. –

+0

Non - jamais compris. J'étais sûr que c'était aussi un problème Glassfish. Nous avons changé notre approche pour utiliser OpenAM qui ne semble pas présenter ce comportement. – Vinnie

Répondre

1

Essayez d'ajouter cette propriété à vos autres propriétés du royaume ldap:

com.sun.jndi.ldap.connect.pool=false 
+0

Merci, cela a fonctionné pour mon problème similaire. Mon application Web d'authentification de formulaire GlassFish EE permettait une connexion réussie même lorsque le compte était verrouillé (confirmé avec un client LDAP distinct, Jxplorer) sur le serveur LDAP. Après avoir défini cette propriété, l'application Web n'autorise plus les connexions aux comptes LDAP verrouillés. – user640118

Questions connexes