Я установил установку AD 2016.Теперь намереваемся использовать его для аутентификации веб-приложений (java).У меня есть кусок кода для тестирования аутентификации и есть некоторые наблюдения.
public static void main(String[] args)
{
String userid="userhere",password="passwordhere";
LdapContextCreation ldapContxCrtn = new LdapContextCreation();
LdapContext ctx = ldapContxCrtn.getLdapContext(userid,password);
if(ctx==null)
{System.out.println("Authentication Failed.");}
else
{System.out.println("Authentication Successful.");}
}
public LdapContext getLdapContext(String base, String password)
{
LdapContext ctx = null;
try
{
Hashtable<String, String> env = new Hashtable<String, String>();
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.SECURITY_AUTHENTICATION, "Simple");
env.put(Context.SECURITY_PRINCIPAL, base);
env.put(Context.SECURITY_CREDENTIALS, password);
env.put(Context.PROVIDER_URL, "ldaps://mydomaincontroller:636");
ctx = new InitialLdapContext(env, null);
}
catch(NamingException nex)
{
//nex.printStackTrace();
}
Теперь я протестировал комбинацию пользователь / пароль в следующих сценариях -
// Первая комбинация, user1 существует вAD и пароль верны (проверка подлинности привязки).Строка userid = "user1@domain.com", пароль = "user1password";Ожидаемый: аутентификация успешна.Факт: аутентификация успешна.Это ясно для меня.Если пароль неверный, он отвечает правильным сообщением - Authentication Failed.
// Вторая комбинация, user2 существует в AD, но пароль, который мы пытаемся отправить, пуст (тестирование связывания без аутентификации) String userid = "user2@domain.com», пароль = "";Ожидается: ошибка аутентификации.Факт: аутентификация успешна.Как справиться с этим сценарием - Могу ли я управлять этим в AD или должен обрабатываться в коде?
// Третье сочетание, user3 НЕ существует в AD (тестирование для несуществующего пользователя) String userid = "user3 @domain.com», пароль = "somepassword";Ожидается: ошибка аутентификации.Факт: аутентификация успешна.Как справиться с этим сценарием?Пользователь даже не существует.Это неправильная конфигурация AD?
// Четвертая комбинация, пустое имя пользователя и пароль (проверка на анонимное связывание) String userid = "", password = "";Ожидается: ошибка аутентификации.Факт: аутентификация успешна.Как справиться с этим сценарием - Могу ли я управлять этим в AD или должен быть обработан в коде?