[LDAP]modification du mot de passe - ligne de commande
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 :
Code:
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();
}
}
} |
Désolée pour la longeur de mon message, mais c'est difficile de faire autrement pour essayer d'expliquer clairement.
Si quelqu'un pouvait m'aider, ce serait sympa.
Merci d'avance!