2013-08-23 59 views

回答

2

問題在於authenticationManager。由於文件說,你必須使用CasAuthenticationProvider這樣的:

<beans:bean id="casAuthenticationProvider" 
    class="org.springframework.security.cas.authentication.CasAuthenticationProvider"> 
    <beans:property name="authenticationUserDetailsService"> 
     <beans:bean 
      class="org.springframework.security.core.userdetails.UserDetailsByNameServiceWrapper"> 
      <beans:constructor-arg ref="mongoUserDetailsService" /> 
     </beans:bean> 
    </beans:property> 
    <beans:property name="serviceProperties" ref="serviceProperties" /> 
    <beans:property name="ticketValidator"> 
     <beans:bean class="org.jasig.cas.client.validation.Cas20ServiceTicketValidator"> 
      <beans:constructor-arg index="0" value="https://localhost:7443/cas" /> 
     </beans:bean> 
    </beans:property> 
    <!-- Esta clave es única por aplicación --> 
    <beans:property name="key" value="your-provider-auth" /> 
</beans:bean> 

然後,你必須到casAuthenticationProvider設置到的AuthenticationManager:

<authentication-manager alias="authenticationManager"> 
    <!-- <authentication-provider user-service-ref='mongoUserDetailsService'/> --> 
    <authentication-provider ref="casAuthenticationProvider" />  
</authentication-manager> 

正如你可以看到,自定義mongoUserDetailsS​​ervice沒有被分配到authenticationManager但新的casAuthenticationProvider,然後我們將casAuthenticationProvider設置爲authenticationManager