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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  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/

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