/** * Constructeur * @param username Le nom de l'utilisateur actuel */ public LDAP_Auth(String username) { //Assignation de la variable username this.USERNAME = username; //Création de table contenant les données pour la connexion Hashtable env = new Hashtable(); //Contexte initial env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory"); //Adresse du serveur LDAP env.put(Context.PROVIDER_URL, "ldap://QUETZALCOATL:389/"); //Demande login + mot de passe env.put(Context.SECURITY_AUTHENTICATION, "simple"); //Identifiant de connexion au serveur LDAP env.put(Context.SECURITY_PRINCIPAL, "ildap@owa"); //Mot de passe env.put(Context.SECURITY_CREDENTIALS, "7rUCq1qC0n" ); try { //Connexion au LDAP DirContext CTX = new InitialDirContext(env); }//try catch (NamingException ex) { //On affiche un message d'erreur System.out.println("Erreur lors de la tentative de connexion :\n" + ex.getMessage() ); return false; }//catch (NamingException ex) //On affiche un message pour indiquer que l’authentification a réussi System.out.println("Authentification réussie pour l'utilisateur " + username); }//public LDAP_Auth(String username)
/** * Indique si le couple username/password est correct * @param username Le nom de l'utilisateur * @param password Le mot de passe de l'utilisateur */ public static boolean authentified(String username, String password) { //Création de table contenant les données pour la connexion Hashtable env = new Hashtable(); //Contexte initial env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory"); //Adresse du serveur LDAP env.put(Context.PROVIDER_URL, "ldap://QUETZALCOATL:389/"); //remplace par ton LDAP //Demande login + mot de passe env.put(Context.SECURITY_AUTHENTICATION, "simple"); //Identifiant de connexion au serveur LDAP env.put(Context.SECURITY_PRINCIPAL, username); //Mot de passe env.put(Context.SECURITY_CREDENTIALS, password ); try { //Connexion au LDAP this.CTX = new InitialDirContext(env); }//try catch (NamingException ex) { //On affiche un message d'erreur System.out.println("Erreur lors de la tentative de connexion :\n" + ex.getMessage() ); }//catch (NamingException ex) }//public static boolean authentified(String username, String password)
/** * Indique si le couple username/password est correct * @param username Le nom de l'utilisateur * @param password Le mot de passe de l'utilisateur */ public static boolean authentified(String username, String password) { //Création de table contenant les données pour la connexion Hashtable env = new Hashtable(); //Contexte initial env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory"); //Adresse du serveur LDAP env.put(Context.PROVIDER_URL, "ldap://QUETZALCOATL:389/"); //remplace par ton LDAP //Demande login + mot de passe env.put(Context.SECURITY_AUTHENTICATION, "simple"); //Identifiant de connexion au serveur LDAP env.put(Context.SECURITY_PRINCIPAL, username); //Mot de passe env.put(Context.SECURITY_CREDENTIALS, password ); try { //Connexion au LDAP this.CTX = new InitialDirContext(env); }//try catch (NamingException ex) { //On affiche un message d'erreur System.out.println("Erreur lors de la tentative de connexion :\n" + ex.getMessage() ); return false; }//catch (NamingException ex) //Affichage d'un message pour indiquer la réussite System.out.println("L'authentification de l'utilisateur " + username + " a réussi !"; return true; }//public static boolean authentified(String username, String password)
package merguez.process.ldap; import java.util.ArrayList; import java.util.Enumeration; import java.util.Hashtable; import javax.naming.Context; import javax.naming.NamingEnumeration; import javax.naming.NamingException; import javax.naming.directory.*; /** * Cette classe permet de s'authentifier sur le serveur LDAP en vue de vérifier l'appertenance à certains groupes de l'utilisateurs * @author asorg */ public class LDAP_Auth { //Login de l'utilisateur private String USERNAME = null; //Connexion au LDAP private DirContext CTX = null; /** * Constructeur * @param username Le nom de l'utilisateur actuel */ public LDAP_Auth(String username) { //Assignation de la variable username this.USERNAME = username; //Création de table contenant les données pour la connexion Hashtable env = new Hashtable(); //Contexte initial env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory"); //Adresse du serveur LDAP env.put(Context.PROVIDER_URL, "ldap://QUETZALCOATL:389/"); //Demande login + mot de passe env.put(Context.SECURITY_AUTHENTICATION, "simple"); //Identifiant de connexion au serveur LDAP env.put(Context.SECURITY_PRINCIPAL, "ildap@owa"); //Mot de passe env.put(Context.SECURITY_CREDENTIALS, "7rUCq1qC0n" ); try { //Connexion au LDAP this.CTX = new InitialDirContext(env); }//try catch (NamingException ex) { //On affiche un message d'erreur System.out.println("Erreur lors de la tentative de connexion :\n" + ex.getMessage() ); }//catch (NamingException ex) }//public LDAP_Auth(String username) /** * Cette fonction renvoie la liste des groupes dont l'utilisateur fait parti * @return La liste des groupes dont l'utilisateur fait parti */ public ArrayList<String> getGroups() { //Création de liste qui contiendra tous les groupes dont fait parti l'utilisateur ArrayList<String> res = new ArrayList<String>(); //Base dans laquelle se trouve l'utilisateur String BASE = "OU=Utilisateurs,OU=Walter,DC=QUETZALCOATL,DC=CHAC,DC=LOCAL"; //Filtre de recherche permettant de n'obtenir que les informations concernant l'utilisateur logué String filter = "(userPrincipalName=" + this.USERNAME + "@owa)"; //Création d'un élément pour la recherche d'information SearchControls sc = new SearchControls(); sc.setSearchScope(SearchControls.SUBTREE_SCOPE); NamingEnumeration items = null; try { //Récupération des informations dans la BASE, avec le filter appliqué comme filtre, et SC comme méthode recherche items = this.CTX.search(BASE, filter, sc); }//try catch (NamingException ex) { //On affiche un message d'erreur System.out.println("Erreur lors de la recherche :\n" + ex.getMessage() ); }//catch (NamingException ex) try { //Tant qu'items n'est pas null, et qu'il y a encore des résultats while (items != null && items.hasMore()) { //On prend le résultat suivant SearchResult sr = (SearchResult)items.next(); //On récupère ses attibruts Attributes attrs = sr.getAttributes(); //On récupère l'attributs memberOf qui contient les groupes de l'utilisateur Attribute att = attrs.get("memberOf"); //On récupère tous les éléments de cet attribut Enumeration enu = att.getAll(); //Tant qu'enu n'est pas null, et qu'il y a des éléments while( enu != null && enu.hasMoreElements() ) { //On ajoute le groupe à la liste de groupes de l'utilisateur res.add( enu.nextElement().toString() ); }//while( enu != null && enu.hasMoreElements() ) }//while (items != null && items.hasMore()) }//try catch (NamingException ex) { //On affiche un message d'erreur System.out.println("Erreur lors de la récupération des attributs de l'utilisateur :\n" + ex.getMessage() ); }//catch (NamingException ex) //On renvoie la liste de groupes dont fait l'utilisateur return res; }//public ArrayList<String> getGroups() }//public class LDAP_Auth
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question