2016-05-06 10 views
1

Ich habe Schwierigkeiten, LDAP-Sicherheitskonfiguration mit XML-Konfiguration arbeiten zu lassen.LDAP-Authentifizierung - Spring Security - LdapAuthenticationProvider

Ich erhalte den folgenden Fehler:

org.springframework.beans.factory.BeanCreationException: Error creating bean    with name 'securityConfig': Injection of autowired dependencies failed; nested  exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private org.springframework.security.ldap.authentication.LdapAuthenticationProvider sgcbmw.security.SecurityConfig.ldapAuthenticationProvider; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [org.springframework.security.ldap.authentication.LdapAuthenticationProvider] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: @org.springframework.beans.factory.annotation.Autowired(required=true) 

Meine Sicherheitskonfiguration:

<bean id="contextSource"class="org.springframework.security.ldap.DefaultSpringSecurityContextSource"> 
     <constructor-arg value="ldap:/ldapserver"/> 
     <property name="userDn" value="user"/> 
     <property name="password" value="pass"/> 
    </bean> 

    <bean id="ldapAuthProvider" 
      class="org.springframework.security.ldap.authentication.LdapAuthenticationProvider"> 
     <constructor-arg> 
      <bean class="org.springframework.security.ldap.authentication.BindAuthenticator"> 
       <constructor-arg ref="contextSource"/> 
       <property name="userSearch"> 
       <bean id="userSearch" 
         class="org.springframework.security.ldap.search.FilterBasedLdapUserSearch"> 
        <constructor-arg index="0" value=""/> 
        <constructor-arg index="1" value="(&amp;(objectClass=user)(sAMAccountName={0}))"/> 
        <constructor-arg index="2" ref="contextSource" /> 
       </bean> 
       </property> 
       <property name="userDnPatterns"> 
        <list><value>uid={0},ou=people</value></list> 
       </property> 
      </bean> 
     </constructor-arg> 
     <constructor-arg> 
      <bean class="org.springframework.security.ldap.userdetails.DefaultLdapAuthoritiesPopulator"> 
       <constructor-arg ref="contextSource"/> 
       <constructor-arg value="ou=groups"/> 
       <property name="groupRoleAttribute" value="memberOf"/> 
      </bean> 
     </constructor-arg> 
    </bean> 
    <security:authentication-manager> 
     <security:authentication-provider ref="ldapAuthProvider" /> 
    </security:authentication-manager> 

Adapter-Konfiguration:

@Configuration 
@EnableWebSecurity 
public class SecurityConfig extends WebSecurityConfigurerAdapter { 

@Autowired 
private LdapAuthenticationProvider ldapAuthenticationProvider; 

@Override 
protected void configure(AuthenticationManagerBuilder auth) throws Exception { 
    auth.authenticationProvider(ldapAuthenticationProvider); 
} 

@Override 
protected void configure(HttpSecurity http) throws Exception { 
    http 
      .csrf().disable() 
      .authorizeRequests() 
      .anyRequest().fullyAuthenticated() 
      .and() 
      .formLogin(); 
} 
} 

Sollte die LdapAuthenticationProvider diese Art und Weise nicht spritzen?

+0

wird Ihr Kontext überhaupt geparst? – Palcente

+0

Was meinst du mit geparst? Im Web, xml Ich habe den folgenden Code: contextConfigLocation Classpath: Frühjahr/business-config.xml Ricardo

+0

die Sie interessieren könnten helfen: Injizieren mithilfe von Setter von ldapAuthenticationProvider, Erstellen eines Setter von ldapAuthenticationProvider in der Klasse "SecurityConfig", Entfernen der Annotation "@Autowired". – PeaceIsPearl

Antwort

0

Was mein Problem gelöst:

ich einen Kontext XML-Konfiguration erstellt haben nur für die Sicherheit und das hinzugefügt Folgendes web.xml:

<context-param> 
    <param-name>contextConfigLocation</param-name> 
    <param-value>classpath:spring/business-config.xml classpath:spring/spring-security-config.xml</param-value> 
</context-param> 

Und schließlich ich die Bohnen Konfiguration auf meiner Feder lassen -Security-config.xml und Autowire sie auf meiner Klasse WebSecurityConfigurerAdapter. Entfernt dies aus dem xml:

<security:authentication-manager> 
    <security:authentication-provider ref="ldapAuthProvider" /> 
</security:authentication-manager> 

Vielen Dank für Ihre Hilfe.