Comment vérifier le mot de passe de l'utilisateur dans ldap whith java avec LdapContext donné?
J'ai une application web, où les utilisateurs doivent se connecter. Le mot de passe est stocké dans un serveur LDAP. Toutes les informations sur le serveur LDAP sont stockées dans le serveur d'application (glassfish) comme externes ressource jndi. Donc, ma demande n'est pas de savoir quelque chose sur le serveur LDAP et obtient seulement une LdapContext comme ceci:
@Resource(name = "ldap/users")
private LdapContext ctx;
Dans ce contexte, il est facile de modifier ou de lire les informations stockées pour les utilisateurs, mais comment puis-je vérifier leurs mots de passe?
Normalement, je voudrais juste faire une nouvelle connexion pour vérifier un mot de passe des utilisateurs. Comme ceci:
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.PROVIDER_URL, "ldap://localhost:389/o=JNDITutorial");
env.put(Context.SECURITY_AUTHENTICATION, "simple");
env.put(Context.SECURITY_PRINCIPAL, "cn=S. User, ou=NewHires, o=JNDITutorial");
env.put(Context.SECURITY_CREDENTIALS, "mysecret");
DirContext ctx = new InitialDirContext(env);
Mais depuis je ne sais pas ce paramètres, je ne peux pas faire ça. Alors, comment puis-je vérifier si le mot de passe d'un utilisateur est correct avec mon LdapContext?
Les mots de passe sont stockées sous forme cryptée (asis) donc je ne peux pas il suffit de comparer les attributs.
Merci
Raffael
source d'informationauteur raffael
Vous devez vous connecter pour publier un commentaire.
Vous devriez être en mesure d'obtenir de l'environnement à partir de l'annuaire ldap contexte, le clone, puis mettre le capital et les informations d'identification de l'utilisateur que vous voulez vérifier:
C'est une solution qui peut être utilisé pour authentifier un utilisateur avec autre chose que le nom de domaine, par exemple avec un
uid
ousAMAccountName
.Les étapes à suivre sont:
sAMAccountName
)Exemple de Code:
j'ai fait de même dans mon application.
voici la qui pourraient être utiles pour vous.
En application réelle des serveurs LDAP, le mot de passe est stocké dans hashcode forme et à chaque fois que le gestionnaire d'accès prend le mot de passe de l'utilisateur, que le texte en clair le mot de passe est de nouveau haché avec la même clé et vérifié à celui qui est stocké dans le LDAP. De manière telle que u ne peut pas obtenir le mot de passe en clair à partir du serveur LDAP.
Donc si vous connaissez le secret de la clé, alors seulement vous pouvez le décrypter.