Authentification LDAP en java
Posté par Clem | jeudi 19 novembre 2009 à 11:37 | rss
Un test d'authentification en java à un annuaire OpenLdap (par exemple) est très simple à mettre en place.
Il faut au préalable récupérer le DN (Distinguished Name) de l'annuaire. On peut se servir de l'onglet "Browse" de GQ pour afficher l'arborescence.
Chez moi, le DN de l'annuaire est "dc=home,dc=com" et celui de mon utilisateur est "uid=cquaquin,ou=people,dc=home,dc=com"
En java, on va utiliser l'API JNDI pour se connecter et manipuler les objets de la base de donnée de l'annuaire. Voici un exemple simple de test de validité de login et de mot de passe :
package fr.quaquin.clement.ldap;
import java.util.Hashtable;
import javax.naming.*;
import javax.naming.directory.*;
public class AuthenticateUser {
public static void main(String args[]){
String host="ldap://localhost:389/dc=home,dc=com";
String login=args[0];
String password=args[1];
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.PROVIDER_URL, host);
env.put(Context.SECURITY_AUTHENTICATION, "simple");
env.put(Context.SECURITY_PRINCIPAL, "uid="+login+",ou=people,dc=home,dc=com");
env.put(Context.SECURITY_CREDENTIALS, password);
// Create the initial context
try {
DirContext ctx = new InitialDirContext(env);
System.out.println("Connected !");
System.exit(0);
} catch (NamingException e) {
System.out.println("Failed !");
System.exit(1);
}
}
}
J'exporte cette classe dans une archive ldap-authentify.jar, puis je vais l'utiliser dans un shell unix.
#!/bin/sh
if [ $# -ne 2 ] # si le nombre de parametres n'est pas 2
then # affiche l'usage
echo Usage: $0 login password
exit 1
fi
java -jar ldap-authentify.jar $1 $2
code_retour=$?
if [ "$code_retour" = 0 ]; then
echo "OK"
else
echo "Echec"
fi
./connexion_ldap.sh cquaquin mypassword
Connected !
OK
Références : JNDI : Tips for LDAP users
This work is licensed under a Creative Commons Attribution 3.0 Unported License
Commentaires
Aucun commentaire pour le moment.
Ajouter un commentaire
Les commentaires pour ce billet sont fermés.