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

Développement Web en Java Discussion :

Connexion Java à Active Directory


Sujet :

Développement Web en Java

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Administrateur des applications
    Inscrit en
    Septembre 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Administrateur des applications
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2013
    Messages : 4
    Par défaut Connexion Java à Active Directory
    Bonjour,

    J'essaye de me connecter à Active Directory via mon code Java en utilisant JNDI et DIGEST-MD5 comme méthode d'authentification mais j'obtiens le message d'erreur suivant :
    Début du test Active Directory
    Search error: javax.naming.AuthenticationException: [LDAP: error code 49 - 8009030C: LdapErr: DSID-0C0904DC, comment: AcceptSecurityContext error, data 52e, v1db1
    voici mon code :
    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    public class TestAD {
    static DirContext ldapContext;
      public static void main (String[] args) throws NamingException
      {
        try
        {
          System.out.println("Début du test Active Directory");
     
          Hashtable<String, String> ldapEnv = new Hashtable<String, String>(11);
          ldapEnv.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
          ldapEnv.put(Context.PROVIDER_URL,  "ldap://societe.fr:389");
          ldapEnv.put(Context.SECURITY_AUTHENTICATION, "DIGEST-MD5");
          ldapEnv.put("java.naming.security.sasl.realm","myRealm");
          ldapEnv.put("javax.security.sasl.qop", "auth");
          ldapEnv.put("javax.security.sasl.strength","high");
          ldapEnv.put(Context.SECURITY_PRINCIPAL, "dn:cn=administrateur,ou=users,o=societe.fr");
          ldapEnv.put(Context.SECURITY_CREDENTIALS,"myPassword");
     
     
          ldapContext = new InitialDirContext(ldapEnv);
     
          // Create the search controls         
          SearchControls searchCtls = new SearchControls();
     
          //Specify the attributes to return
          String returnedAtts[]={"sn","givenName", "samAccountName"};
          searchCtls.setReturningAttributes(returnedAtts);
     
          //Specify the search scope
          searchCtls.setSearchScope(SearchControls.SUBTREE_SCOPE);
     
          //specify the LDAP search filter
          String searchFilter = "(&(objectClass=user))";
     
          //Specify the Base for the search
          String searchBase = "dc=societe,dc=fr";
          //initialize counter to total the results
          int totalResults = 0;
     
          // Search for objects using the filter
          NamingEnumeration<SearchResult> answer = ldapContext.search(searchBase, searchFilter, searchCtls);
     
          //Loop through the search results
          while (answer.hasMoreElements())
          {
            SearchResult sr = (SearchResult)answer.next();
     
            totalResults++;
     
            System.out.println(">>>" + sr.getName());
            Attributes attrs = sr.getAttributes();
            System.out.println(">>>>>>" + attrs.get("samAccountName"));
          }
     
          System.out.println("Total results: " + totalResults);
          ldapContext.close();
        }
        catch (Exception e)
        {
          System.out.println(" Search error: " + e);
          e.printStackTrace();
          System.exit(-1);
        }
      }}
    Je peux me connecter avec les même paramètres dans Apache Directory Studio.

    Quelqu'un saurait-il m'indiquer d'où peut venir le problème ?

    Merci d'avance pour votre aide.

  2. #2
    Membre Expert
    Avatar de yotta
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Septembre 2006
    Messages
    1 088
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 088
    Par défaut
    Selon Microsoft Technet :

    8009030C: LdapErr: DSID-0C0903A9, comment: AcceptSecurityContext error, data 52e, v1db1 (unknown username or bad password)

    Apparemment, vous ne renseignez pas les bonnes informations concernant l'utilisateur et/ou le mot de passe.
    Mais comme vous précisez que la même connexion fonctionne avec une autre technologie, c'est que ces informations sont bonnes...
    Cela doit venir de la définition de SECURITY_AUTHENTICATION, "DIGEST-MD5".
    Quel est le type de serveur AD utilisé ?
    Une technologie n'est récalcitrante que par ce qu'on ne la connait et/ou comprend pas, rarement par ce qu'elle est mal faite.
    Et pour cesser de subir une technologie récalcitrante, n'hésitez surtout pas à visiter les Guides/Faq du site !

    Voici une liste non exhaustive des tutoriels qui me sont le plus familiers :
    Tout sur Java, du débutant au pro : https://java.developpez.com/cours/
    Tout sur les réseaux : https://reseau.developpez.com/cours/
    Tout sur les systèmes d'exploitation : https://systeme.developpez.com/cours/
    Tout sur le matériel : https://hardware.developpez.com/cours/

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Administrateur des applications
    Inscrit en
    Septembre 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Administrateur des applications
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2013
    Messages : 4
    Par défaut
    @yotta:
    j'utilise Microsoft Active Directory 2003

  4. #4
    Membre Expert
    Avatar de yotta
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Septembre 2006
    Messages
    1 088
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 088
    Par défaut
    Ok. N'ayant pas plus d'informations, pour moi le problème se trouve là :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
          ldapEnv.put(Context.SECURITY_AUTHENTICATION, "DIGEST-MD5");
          ldapEnv.put("java.naming.security.sasl.realm","myRealm");
          ldapEnv.put("javax.security.sasl.qop", "auth");
          ldapEnv.put("javax.security.sasl.strength","high");
          ldapEnv.put(Context.SECURITY_PRINCIPAL, "dn:cn=administrateur,ou=users,o=societe.fr");
          ldapEnv.put(Context.SECURITY_CREDENTIALS,"myPassword");
    Vous pouvez consulter le tableau d'erreur accessible depuis le lien ci-dessous :
    http://docs.oracle.com/javase/tutori...xceptions.html

    L'erreur 49 y est indiquée : Invalid credentials AuthenticationException

    Ce ne sont pas les informations d'identification qui sont refusées, c'est le mécanisme de soumission de l'identification qui est erroné.
    Êtes-vous sûr des informations renseignées dans cette partie de code ?

    Petit rappel :

    Les valeurs possibles pour Context.SECURITY_AUTHENTICATION sont : simple, SSL, SASL

    Hors vous, vous renseignez "DIGEST-MD5"... Apparemment, vous auriez peut-être du mettre "SASL" ?...
    Une technologie n'est récalcitrante que par ce qu'on ne la connait et/ou comprend pas, rarement par ce qu'elle est mal faite.
    Et pour cesser de subir une technologie récalcitrante, n'hésitez surtout pas à visiter les Guides/Faq du site !

    Voici une liste non exhaustive des tutoriels qui me sont le plus familiers :
    Tout sur Java, du débutant au pro : https://java.developpez.com/cours/
    Tout sur les réseaux : https://reseau.developpez.com/cours/
    Tout sur les systèmes d'exploitation : https://systeme.developpez.com/cours/
    Tout sur le matériel : https://hardware.developpez.com/cours/

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Administrateur des applications
    Inscrit en
    Septembre 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Administrateur des applications
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2013
    Messages : 4
    Par défaut
    @yotta :c'est l'erreur 48 qui indique que le mécanisme de soumission de l'identification est erroné.
    et Les valeurs possibles pour Context.SECURITY_AUTHENTICATION sont :"SIMPLE ,DIGEST-MD5 ,GSSAPI ,GSS-SPNEGO ,EXTERNAL" selon :
    http://docs.oracle.com/javase/jndi/t...rity/sasl.html

    mais comeme j'ai essayé d'utilisé la valeur "SASL" pour te faire plaisir mais ça marche pas

  6. #6
    Membre Expert
    Avatar de yotta
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Septembre 2006
    Messages
    1 088
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 088
    Par défaut
    Avez-vous essayer avec la valeur "DIGEST-MD5 GSSAPI" ?
    Une technologie n'est récalcitrante que par ce qu'on ne la connait et/ou comprend pas, rarement par ce qu'elle est mal faite.
    Et pour cesser de subir une technologie récalcitrante, n'hésitez surtout pas à visiter les Guides/Faq du site !

    Voici une liste non exhaustive des tutoriels qui me sont le plus familiers :
    Tout sur Java, du débutant au pro : https://java.developpez.com/cours/
    Tout sur les réseaux : https://reseau.developpez.com/cours/
    Tout sur les systèmes d'exploitation : https://systeme.developpez.com/cours/
    Tout sur le matériel : https://hardware.developpez.com/cours/

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Administrateur des applications
    Inscrit en
    Septembre 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Administrateur des applications
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2013
    Messages : 4
    Par défaut
    oui,j'ai meme essayé ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ldapEnv.put(Context.SECURITY_AUTHENTICATION, "DIGEST-MD5 GSSAPI GSS-SPNEGO EXTERNAL");

  8. #8
    Membre Expert
    Avatar de yotta
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Septembre 2006
    Messages
    1 088
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 088
    Par défaut
    Re-bonjour,

    Je sèche complètement. C'est très bizarre...
    Bref, j'ai fouillé comme vous l'avez certainement fait sur le net pour trouver d'autre discussions traitant du même problème. Je ne sais pas si vous aviez lu cela, mais j'ai trouvé une explication qui tient a peu près la route, elle est la suivante, extraite de son site d'origine par copier/coller :

    Bonjour,

    Merci pour le lien.
    Mais entre temps, j'ai trouvé la source de mon problème... sans en comprendre la cause...

    En désespoir de cause, j'ai réinitialisé le mot de passe de l'utilisateur que je prends pour me connecter à l'AD.
    J'ai remis le même mot de passe que précédemment ... et maintenant la synchronisation fonctionne !!! ???
    j'en ai discuté avec l'administrateur de notre AD qui m'a mentionné un possible problème de cache...
    (Tiré de la discussion accesible à : https://forums.alfresco.com/fr/conne...-02212012-1504)

    Avez-vous essayé de redéfinir le mot de passe de votre utilisateur de test ?
    Une technologie n'est récalcitrante que par ce qu'on ne la connait et/ou comprend pas, rarement par ce qu'elle est mal faite.
    Et pour cesser de subir une technologie récalcitrante, n'hésitez surtout pas à visiter les Guides/Faq du site !

    Voici une liste non exhaustive des tutoriels qui me sont le plus familiers :
    Tout sur Java, du débutant au pro : https://java.developpez.com/cours/
    Tout sur les réseaux : https://reseau.developpez.com/cours/
    Tout sur les systèmes d'exploitation : https://systeme.developpez.com/cours/
    Tout sur le matériel : https://hardware.developpez.com/cours/

Discussions similaires

  1. Connexion annuaire Active Directory
    Par Delak dans le forum Langage
    Réponses: 2
    Dernier message: 08/08/2011, 09h04
  2. verification de connexion a active directory
    Par belgariel dans le forum Windows
    Réponses: 0
    Dernier message: 27/06/2011, 12h23
  3. connexion compte active directory et Exchange
    Par daninou dans le forum Windows Serveur
    Réponses: 1
    Dernier message: 05/02/2009, 11h44
  4. Connexion LDAP (active directory)
    Par Mateache dans le forum ASP
    Réponses: 2
    Dernier message: 09/05/2006, 13h33
  5. [VBS] Connexion à l'Active Directory
    Par romain_gil dans le forum VBScript
    Réponses: 6
    Dernier message: 10/04/2006, 16h46

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