Bonjour,

travaillant sur un projet Batch qui doit se connecter en LDAP via Spring, j'ai d'abord écris une classe Java standard afin de me familiariser avec le LDAP. J'ai réussi à obtenir ce que je voulais. Comment faire pour migrer cette classe en utilisant spring-boot-starter-data-ldap ?

Ma classe :
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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
 
public class TestLdap {
 
    public static void main(String[] argv) {
        String[] attrIDs  = {
            "sn", "GivenName", "mail", "sAMAccountName", "extensionAttribute3", "extensionAttribute5",
            "extensionAttribute7","extensionAttribute11", "extensionAttribute12","Enabled", "distinguishedName",
            "employeeNumber", "streetAddress", "postalCode", "telephoneNumber", "title", "division", "department",
            "manager", "initials", "info","surname","l","company"
        };
 
        SearchControls ctls = new SearchControls(SearchControls.SUBTREE_SCOPE, 0, 0, attrIDs, false, false);
 
        String filter = "(&(objectclass=user)(cn=*))";
 
        String serverIP = "XXXXX";
        String serverPort = "XXX";
        String serverLogin = "XXXXX";
        String serverPass = "XXXX";
 
        Hashtable<String,String> env = new Hashtable<String,String>();
        env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
        env.put(Context.PROVIDER_URL, "ldap://"+serverIP+":"+serverPort+"/");
        env.put(Context.SECURITY_AUTHENTICATION, "simple");
        env.put(Context.SECURITY_PRINCIPAL, serverLogin);
        env.put(Context.SECURITY_CREDENTIALS, serverPass);
 
        try {
 
            DirContext ctx = new InitialDirContext(env);
            System.out.println("Connexion au serveur : OK");
 
            try {
 
               NamingEnumeration<SearchResult> namingEnum = ctx.search("OU=Utilisateurs,DC=XX,DC=XX,DC=XX", filter, ctls);
                while (namingEnum.hasMore()) {
                    SearchResult result = (SearchResult) namingEnum.next();
                    Attributes attrs = result.getAttributes();
                    System.out.println(attrs.get("sn"));
                    System.out.println(attrs.get("GivenName"));
                    System.out.println(attrs.get("mail"));
                    System.out.println(attrs.get("sAMAccountName"));
                    System.out.println(attrs.get("extensionAttribute3"));
                    System.out.println(attrs.get("extensionAttribute5"));
                    System.out.println(attrs.get("extensionAttribute7"));
                    System.out.println(attrs.get("extensionAttribute11"));
                    System.out.println(attrs.get("extensionAttribute12"));
                    System.out.println(attrs.get("Enabled"));
                    System.out.println(attrs.get("distinguishedName"));
                    System.out.println(attrs.get("employeeNumber"));
                    System.out.println(attrs.get("streetAddress"));
                    System.out.println(attrs.get("postalCode"));
                    System.out.println(attrs.get("telephoneNumber"));
                    System.out.println(attrs.get("title"));
                    System.out.println(attrs.get("division"));
                    System.out.println(attrs.get("department"));
                    String manager = getString(attrs, "manager");
                    System.out.println("Manager : " + manager);
                    System.out.println(attrs.get("initials"));
                    System.out.println(attrs.get("info"));
                    System.out.println(attrs.get("surname"));
                    System.out.println(attrs.get("l"));
                    System.out.println(attrs.get("company"));
                }
                namingEnum.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        } catch (NamingException e) {
            System.out.println("Connexion au serveur : KO");
            e.printStackTrace();
        }
    }
 
    private static String getString(Attributes attrs, String attribut) {
        String valFormat = String.valueOf(attrs.get(attribut));
        return valFormat.substring(valFormat.indexOf("=")+1,valFormat.indexOf(","));
    }
}
Où placer les informations du server, login, pass ? dans un fichier properties via les directives security.ldapConfig.connectionName ?
Comment effectuer ma recherche ?

Merci pour les pistes et retour que vous pourrez m'apporter.

Bonne journée.

Cdt,