Настройка Spring Security с помощью аутентификатора Weblogic LDAP - PullRequest
1 голос
/ 27 марта 2012

Я пытаюсь настроить Spring Security в своем приложении, используя аутентификатор LDAP, настроенный в Oracle Weblogic Server 10.3.

Я искал в Интернете, но все, что я нашел, - это как установитьLDAP прямо в spring-security.xml, но ничего о том, как импортировать в него конфигурацию, имеющуюся на сервере, поэтому при попытке входа в систему он проверяет пользователя и пароль с помощью аутентификатора на сервере.

Я хочу сделать это, потому что у меня нет доступа к конфигурации LDAP (он находится в производственной среде), поэтому я должен отправить данные непосредственно на него.

Есть ли какие-либоспособ сделать это?

1 Ответ

0 голосов
/ 27 марта 2012

Вам необходимо создать собственный AuthenticationHandler и объявить его в своей конфигурации Spring Security, или вы можете написать свой собственный UserDetailsService, который выполняет запрос LDAP за вас.

<authentication-manager>
    <authentication-provider user-service-ref="jbossLdapController" >
       <password-encoder hash="sha" base64="true" ref="passwordEncoder">
          <salt-source ref="saltSource"/>
       </password-encoder>
    </authentication-provider>
</authentication-manager>

С этим вы можете создать класс, который реализует UserDetailsService, чтобы получить все функциональные возможности этого без необходимости реализовывать все это вручную, используя обычный пользовательский обработчик аутентификации.

public class JBossLdapController implements UserDetailsService {
      ReflectionSaltSource saltSource;
      public void setSaltSource(ReflectionSaltSource saltSource) {
         this.saltSource = saltSource;
      }

      ShaPasswordEncoder passwordEncoder;
      public void setPasswordEncoder(ShaPasswordEncoder passwordEncoder) {
         this.passwordEncoder = passwordEncoder;
      }

      // LDAP stuff

      @Override
      public UserDetails loadUserByUsername(String userName) throws UsernameNotFoundException, DataAccessException {
         // Build user details, call LDAP query.  User details functionality of Spring will automatically compare user supplied credentials with hash and salt source versus username and encrypted password in UserDetails object.
      }

Помните, что это всего лишь пример того, как это можно сделать, не отказываясь от преимуществ функциональности Spring Security UserDetails. Конечно, не зная больше о вашем провайдере LDAP, пароли не могут быть зашифрованы SHA солью.

...