IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

API standards et tierces Java Discussion :

Java et LDAP


Sujet :

API standards et tierces Java

  1. #1
    Membre régulier
    Inscrit en
    Février 2006
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 10
    Par défaut Java et LDAP
    Bonjour,

    Je sollicite votre aide dans le cadre d'une connexion à une LDAP avec Java.

    J'établis une connexion grâce au code suivant cependant j'aurais voulu savoir comment se binder avec un login et un mot de passe précis sur la LDAP.

    Merci d'avance.

    int LDAPConnect( String sAdressLDAP, String sDomain )
    {
    sAdressLDAP = "ldap://" + sAdressLDAP + "/dc=" + sDomain + ",dc=com";
    // Configuration Contexte + serveur + port
    Hashtable hCtx = new Hashtable();
    hCtx.put( Context.INITIAL_CONTEXT_FACTORY, sInitContext );
    hCtx.put( Context.PROVIDER_URL, sAdressLDAP);
    try
    {
    // Initialisation du contexte et connexion au serveur
    DirContext dcCtx = new InitialDirContext( hCtx );
    }
    catch ( NamingException e )
    {
    return 1;
    // Message d'erreur
    }
    return 0;
    }

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2006
    Messages : 124
    Par défaut
    Vérifie d'abord que tu arrives à te connecter à ton serveur LDAP avec un client comme JXplorer, histoire d'être sûr que le serveur est correctement configuré.

    Sinon j'ai jamais fait ce genre de connection moi-même mais j'ai un fichier où ils en créent une, voici quelques extraits:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
        protected Hashtable ctxParameters;
        ctxParameters = new Hashtable();
     
            // Set ctxParameters
            Iterator keys = parameters.keySet().iterator();
            while ( keys.hasNext() ) {
                temp = (String)keys.next();
                if ( temp.startsWith( JNDI_PROPERTY_PREFIX ) ) {
                    ctxParameters.put( temp, parameters.get( temp ) );
                }
            }
    Ouverture d'une connection:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    /**
         * Gets a JNDI Context using the connection parameters specified for
         * this Store in the Domain.
         * @throws ServiceConnectionFailedException
         */
        private DirContext getContext() throws ServiceConnectionFailedException {
            getLogger().log( name + ": Connecting to LDAP server.", LOG_CHANNEL, Logger.DEBUG );
            try {
                DirContext ctx = new InitialDirContext( ctxParameters );
                if ( ctx != null ) {
                    return ctx;
                } else {
                    throw new ServiceConnectionFailedException(
                        this, "Invalid JNDI connection parameters." );
                }
            } catch ( NamingException e ) {
                getLogger().log( name + ": Error Connecting to LDAP Server",
                    e,
                    LOG_CHANNEL,
                    Logger.CRITICAL );
                throw new ServiceConnectionFailedException( this, e );
            }
        }
    Fermeture d'une connection
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
        /**
         * Closes a JNDI connection.
         * @param ctx the Context to close
         */
        private void closeContext(DirContext ctx) {
            getLogger().log( name + ": Disconnecting from LDAP server.", LOG_CHANNEL, Logger.DEBUG );
            try {
                ctx.close();
            } catch ( NamingException e ) {
                getLogger().log( name + ": Error disconnecting from LDAP",
                    e, LOG_CHANNEL, Logger.WARNING );
                ctx = null;
            }
        }
    Sinon pour les paramètres à mettre qu'ils placent dans le hashTable ça doit être quelque chose comme ça ou du moins une partie et sans les balises XML et tout ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
                         <parameter name="jndi.container">OU=people,DC=blabla,DC=fr</parameter>
                         <parameter name="jndi.attributes.rdn">uid</parameter>
                         <parameter name="jndi.search.filter">(objectClass=*)</parameter>
                         <parameter name="jndi.search.scope">ONELEVEL_SCOPE</parameter>
                         <parameter name="jndi.search.attributes">uid,cn</parameter>
                         <parameter name="java.naming.provider.url">ldap://localhost:389</parameter>
                         <parameter name="java.naming.factory.initial">com.sun.jndi.ldap.LdapCtxFactory</parameter>
                         <parameter name="java.naming.security.principal">user</parameter>
                         <parameter name="java.naming.security.authentication">simple</parameter>
                         <parameter name="java.naming.security.credentials">password</parameter>
    Voilà je sais pas si ça t'aidera mais comme je l'ai jamais fait ben je peux pas faire beaucoup plus.

    Bonne chance! Sinon je crois qu'une connection LDAP se fait grâce aux classes JNDI, enfin tu le sais surement, c'est un peu comme JDBC, ODBC, ADODB mais c'est pour des annuaires LDAP. Bref si tu veux des infos c'est peut-être avec le mot-clé JNDI que tu trouveras ton bonheur.

  3. #3
    Membre régulier
    Inscrit en
    Février 2006
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 10
    Par défaut
    Merci bcp,

    je vais au moins me servir du dernier petit code qui va me permettre de compléter mes paramètres. Je sais pas si ca va marcher mais bon je vais tester

  4. #4
    Membre régulier
    Inscrit en
    Février 2006
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 10
    Par défaut
    Et bien non en fait cela ne fonctionne pas, quand je rajoute les paramètres de connexion correspondant au login et au mot de passe la connexion au LDAP ne se fait plus, alors que si je fais simplement une connexion simple avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    hCtx.put( Context.INITIAL_CONTEXT_FACTORY, sInitContext );
    hCtx.put( Context.PROVIDER_URL, sAdressLDAP);
    La connexion fonctionne.

    Help me comment rajouter des paramètres de Bind svp !!!!

  5. #5
    Membre régulier
    Inscrit en
    Février 2006
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 10
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
            hCtx.put( Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory" );
            hCtx.put( Context.PROVIDER_URL, sAdressLDAP);
            hCtx.put( Context.SECURITY_AUTHENTICATION, "simple" );
            hCtx.put( Context.SECURITY_PRINCIPAL, "Login" );
            hCtx.put( Context.SECURITY_CREDENTIALS, "Mdp" );
            hCtx.put( Context.SECURITY_PROTOCOL, "ssl" );
    Voilà je remplis toutes les données pour l'authentification...
    Quelqu'un pourrait-il me dire pourquoi la connexion ne s'effectue pas ?

Discussions similaires

  1. JAVA JNDI LDAP
    Par caiman125 dans le forum API standards et tierces
    Réponses: 1
    Dernier message: 03/02/2009, 13h52
  2. Java et LDAP
    Par kowalsky dans le forum Langage
    Réponses: 2
    Dernier message: 11/04/2008, 23h00
  3. Active Directory, LDAP et JAVA
    Par jessica94 dans le forum API standards et tierces
    Réponses: 13
    Dernier message: 15/03/2006, 17h43
  4. Transactions JAVA / LDAP / RDBMS
    Par mondes_engloutis dans le forum JDBC
    Réponses: 2
    Dernier message: 31/01/2006, 09h52
  5. [LDAP] recherche dans differents container LDAP avec Java
    Par touinth dans le forum Autres SGBD
    Réponses: 2
    Dernier message: 01/07/2004, 16h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo