2016-05-06 27 views
1

私は、LDAPのセキュリティ設定をxml設定と連携させるのに苦労しています。LDAP認証 - 春のセキュリティ - LdapAuthenticationProvider

私は、次のエラー受けています:

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) 

マイセキュリティ設定:

<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> 

設定アダプター:

@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(); 
} 
} 

LdapAuthenticationProviderをこのように注入すべきではありませんの?

私はセキュリティのための1つのコンテキストXML構成を作成し、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> 

そして最後に、私は私の春に豆の設定をしましょう私の問題を解決し何

+0

あなたのコンテキストはまったく解析されていますか? – Palcente

+0

あなたはパースされた意味ですか?ウェブでは、XMLの私は、次のコードを持っています。 ​​contextConfigLocation クラスパス:春/ビジネス-config.xmlの の – Ricardo

+0

、これを試してみてください役立つかもしれません。 ldapAuthenticationProviderのsetterを使用して注入し、SecurityConfigクラスにldapAuthenticationProviderのセッターを作成し、@Autowiredアノテーションを削除します。 – PeaceIsPearl

答えて

0

私のクラスWebSecurityConfigurerAdapterでそれらをAutowireします。 xmlからこれを削除しました:

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

ありがとうございました。

関連する問題