Spring security Version 3.1 - необходимо сопоставить пользователя, использующего либо userPrincipalName без добавления домена, либо sAMAccountName (фильтр поиска?) - PullRequest
0 голосов
/ 04 октября 2019

Все,

Наш ИТ-отдел решил изменить суффикс наших пользователей в AD, добавив другой суффикс к userPrincipalName в AD к фактическому используемому домену.

например, нашдомен - это xxx.com, но userPrincipalName теперь является "usera@zzz.tech", тогда как раньше это было "usera@xxx.com".

Проверка подлинности Spring LDAP AD с этим больше не работает, поэтому я думаю, что: userPrincipalName создается с использованием имени + домена при попытке аутентификации.

Мне нужно как-то это переопределить - но придерживайтесь версии 3.1 безопасности Spring (в идеале!)

Это бин безопасностимы используем

<bean id="ldapActiveDirectoryAuthProvider" class="org.springframework.security.ldap.authentication.ad.ActiveDirectoryLdapAuthenticationProvider">
    <constructor-arg value="$websec{authentication.base}" />
    <constructor-arg value="$websec{ldap.providerUrl}" />
    <property name="authoritiesMapper" ref="dataAutomationGrantedAuthoritiesMapper" />
    <property name="useAuthenticationRequestCredentials" value="true" />
</bean>

Как мне переопределить это поведение?

Спасибо

1 Ответ

0 голосов
/ 17 октября 2019

В итоге мы изменили исходный код Spring для класса: ActiveDirectoryLdapAuthenticationProvider и изменили метод createBindPrincipal, чтобы разрешить авторизацию userPrincipalName, который имеет другой домен, отличный от корневого домена безопасности.

/**
 * Create bind principal by appending configured user domain to username if it doesn't already contain a domain.
 *
 * @param username  User name for which to create bind principal.
 *
 * @return username, if configured domain is null or the username already contains a domain; otherwise username
 *         appended with the configured user domain.
 */
String createBindPrincipal(final String username) {
    if (domain == null || username.contains("@")) {
        return username;
    }
    return username + "@" + userDomain;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...