Я пытаюсь создать экран входа в систему в моей системе, где он запрашивает Active Directory, но когда пароль пользователя имеет какой-либо специальный символ, такой как @ и *, он не проверяется.
Нужно ли шифровать пароль для работы? Как я могу это сделать?
Я получаю пароль пользователя через JPasswordField, используя getPassword ().
boolean valid_login = false;
String password = new String(pwd.getPassword());
try {
LdapContext ctx = null;
Hashtable<String, String> env = new Hashtable<>();
try {
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.SECURITY_AUTHENTICATION, "Simple");
env.put(Context.SECURITY_PRINCIPAL, user);
env.put(Context.SECURITY_CREDENTIALS, password);
env.put(Context.PROVIDER_URL, "ldap://ldap:389/");
ctx = new InitialLdapContext(env, null);
valid_login = true;
ctx.close();
} catch (NamingException nex) {
valid_login = false;
}
} catch (Exception ex) {
valid_login = false;
}
return valid_login;
}