У меня работает мой Ldap, единственная проблема, с которой я сталкиваюсь, была, когда я пытаюсь войти в систему с электронной почтой, когда я попадаю в остальную часть в приведенном ниже коде.Если мое имя пользователя отличается от адреса электронной почты, оно выдает ошибку.то есть, если мой адрес электронной почты - «skumar@gmail.com», а мое имя пользователя - «saurakumar», то из-за неверного пароля пользователя произойдет ошибка.Что касается внутреннего, я использую имя пользователя для создания электронной почты, т.е. если пользователь входит в систему с именем 'karan', то я ожидаю, что электронное письмо будет karan@gmail.com, что не соответствует действительности во многих сценариях, и аутентификация не удалась.Я ищу решение, в котором я могу войти в систему либо по электронной почте, либо по имени пользователя, и я смогу аутентифицировать пользователя.Ниже приведен фрагмент моего кода.Пожалуйста, предложите?
ldapEnv.put(Context.INITIAL_CONTEXT_FACTORY, initialContextFactory);
ldapEnv.put(Context.PROVIDER_URL, url);
ldapEnv.remove(Context.SECURITY_PROTOCOL);
if (email == null) {
lContext = new InitialLdapContext(ldapEnv, null);
entryResult = searchUserEntry(lContext, user, searchCtrls);
final String usrDN = ((Context) entryResult.getObject()).getNameInNamespace();
lContext.addToEnvironment(Context.SECURITY_AUTHENTICATION, "simple");
lContext.addToEnvironment(Context.SECURITY_PRINCIPAL, usrDN);
lContext.addToEnvironment(Context.SECURITY_CREDENTIALS, pass);
lContext.reconnect(null);
} else {
ldapEnv.put(Context.SECURITY_PRINCIPAL, email);
ldapEnv.put(Context.SECURITY_CREDENTIALS, credentials);
lContext = new InitialLdapContext(ldapEnv, null);
return lContext;
searchUserEntry(lContext, user, searchCtrls);
}