Bonjour,
J'ai créé une interface permettant de me connecter à une base LDAP (JNDI). Jusque là, ça fonctionne.
Ensuite, j'aimerais que l'utilisateur puisse modifier son mot de passe.
Pour ce faire, je lance un batch run.bat :
- java -classpath ./classes ch.esnig.ldap.ClientLDAPUI
-url="ldap://localhost:389" -authentication="simple"
-principal="uid=geiers, ou=personne, dc=ecole, dc=ch"
-credentials="xxx"
java -classpath ./classes ch.esnig.ldap.ClientLDAPUI -newPsw
Lorsque le batch contient la commande -newPsw, je demande la saisie et la validation du mot de passe.
A la suite de ça, j'obtiens l'erreur suivante :
- Exception in thread "main" java.lang.NullPointerException
at ch.ldap.ClientLDAP.printMotPasseLDAP(ClientLDAP.java:108)
at ch.ldap.ClientLDAPUI.main(ClientLDAPUI.java: 58)
Voici mon interface :
Désolée pour la longeur de mon message, mais c'est difficile de faire autrement pour essayer d'expliquer clairement.
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 public class ClientLDAPUI { public static void main(String[] args) { String attribut = "userPassword"; ... ... ClientLDAP client = new ClientLDAP(); try { if (args.length>0) { for (int i=0; i<args.length; i++) { if (args[i].startsWith("-url")) { url = args[i].substring(5); System.out.println("url " + url); } else if (args[i].startsWith("-authentication=")) { authentication = args[i].substring(16); System.out.println("authentication " + authentication); } else if (args[i].startsWith("-principal=")) { principal = args[i].substring(11); System.out.println("principal " + principal); } else if (args[i].startsWith("-credentials=")) { credentials = args[i].substring(13); System.out.println("credentials " + credentials); } else if (args[i].startsWith("-help")) { System.out.println ("-help= "); } else if (args[i].startsWith("-newPsw")) { do { Scanner s = new Scanner (System.in); System.out.println ("Nouveau mot de passe : "); newPsw = s.nextLine(); System.out.println ("Validation du nouveau mot de passe : "); newPsw1 = s.nextLine(); if (! newPsw.equals (newPsw1)) { System.out.println ("La validation du mot de passe n'est pas correcte !"); } } while (! newPsw.equals (newPsw1)); client.printMotPasseLDAP (principal); encodedActualPassword = client.getEncodedPassword (newPsw); client.setPassword (attribut, encodedActualPassword, newPsw, principal); client.printMotPasseLDAP (principal); } } } client.connection (url, authentication, principal, credentials); } catch ( ClientLDAPException e ) { e.printStackTrace(); } } }
Si quelqu'un pouvait m'aider, ce serait sympa.
Merci d'avance!
Partager