Что работает
Я разработал это против нашей компании AD:
@Bean
public AuthenticationProvider adProvider() {
ActiveDirectoryLdapAuthenticationProvider adProvider = new ActiveDirectoryLdapAuthenticationProvider(
adConfig.getDomain(), adConfig.getUrl(), adConfig.getRootDn());
adProvider.setSearchFilter(adConfig.getSearchFilter());
adProvider.setUseAuthenticationRequestCredentials(true);
adProvider.setConvertSubErrorCodesToExceptions(true);
adProvider.setAuthoritiesMapper(authorities -> List.of(new FooAuthority("*")));
return adProvider;
}
Это работает; Я могу войти, используя учетные данные своей компании. Важно : я могу использовать свой sAMAccountName
(который также является моим uid
) для входа в систему.
Цель
Теперь я хочу провести несколько автоматических тестов для определенных крайних случаев, используя локальную AD. Я выбрал ApacheDS для его кроссплатформенности, плюс у него есть несколько доступных контейнеров Docker. Я использую openmicroscopy / apacheds
, потому что он казался активным, задокументированным и настраиваемым, важным для новичка, такого как я.
Задача
Проблема в том, что я не могу войти в систему. Я проследил до двух строк в o.s.security.ldap.authentication.ad.ActiveDirectoryLdapAuthenticationProvider
: пока searchForUser(ctx, username)
в doAuthentication(...)
(строка 148 в 5.0.12.RELEASE) работает с моим sAMAccountName
(например, foobar ), contextFactory.createContext(env)
в bindAsUser(...)
(строка 204 в 5.0.12.RELEASE) требует полностью определенного DN (например, cn = foobar, ou = people, dc = acme, dc = com ) на работу.
Так что, похоже, на моей стороне какая-то неверная конфигурация, возможно, из-за моего недопонимания ... Кажется, мне нужен какой-то другой пользователь для аутентификации, чем для поиска после этого? Как мне это настроить, и / или почему AD нашей компании работает просто отлично? PS: я читал про анонимную аутентификацию, может наша компания разрешает такое? Но использование Apache Directory Studio против AD компании требует от меня входа в систему (насколько я могу судить) ...