Ich stimme zu, dass die beste Praxis ist nicht, den Grund zu sagen.
-
Aber wenn Sie es zu tun haben, egal was:
eine search
mit dem Nickname tun, um zu überprüfen, ob der Benutzername vorhanden ist. Wenn es nicht existiert, ist es ein Fehler.
Wenn ein Benutzer vorhanden ist und weiterhin authentifiziert wird, aber Sie AuthenticationException erhalten, handelt es sich um ein falsches Kennwort.
-
Edit:
If(checkUserExists(username)){
//construct the hashtable environment
//...
ht.put(Context.SECURITY_PRINCIPAL, username);
ht.put(Context.SECURITY_PRINCIPAL, password);
//...
try {
localLdapContent = new InitialLdapContext(ht, null);
} catch (Exception e) {
//suppose it's a wrong password
}
}else{
//error user doesn't exist
}
Sie benötigen eine andere LDAP-Verbindung mit der Erlaubnis Benutzer für alle Anforderungen zu überprüfen.
boolean checkUserExists(String username) {
//...
ht_administrator.put(Context.SECURITY_PRINCIPAL, admin_username);
ht_administrator.put(Context.SECURITY_PRINCIPAL, admin_password);
//...
adminconn = new InitialLdapContext(ht_administrator, null);
return adminconn.search(
"uid="+username+",ou=people,dc=example,dc=com", "(objectclass=*)", searchControls
).hasMore();
}
Ich bin nicht zeigt, die man in der Benutzeroberfläche falsch ist, aber mein Code benötigt, welches ist Mismatch entweder Benutzername oder das Passwort –