跳到主要内容

22、验证管理器和命名空间

Spring Security中主要的提高验证服务的接口是AuthenticationManager,这通常是一个Spring Security的ProviderManager 类的实例。如果你以前用过框架你可能已经熟悉了。如果不是后面的技术预览章节会讲到。这个bean是通过authentication-manager命名空间来注册。你不能使用自定义的AuthenticationManager如果通过命名空间使用HTTP或方法安全,但是这不应该是一个问题,因为你可以完全控制所使用的好的AuthenticationProvider。

您可能需要使用ProviderManager注册其他的AuthenticationProvider Bean,你可以使用<authentication-provider>元素的ref属性,在属性的值是您要添加的bean的名字。例如:

<authentication-manager> 
<authentication-provider ref="casAuthenticationProvider"/> 
</authentication-manager> 

<bean id="casAuthenticationProvider" 
    class="org.springframework.security.cas.authentication.CasAuthenticationProvider"> 
... 
</bean> 

另一个常见的需求是,上下文中的另一个bean可能需要引用AuthenticationManager,您可以注册一个AuthenticationManager的别名在应用程序上下文中的其他地方使用这个名字。

<security:authentication-manager alias="authenticationManager"> 
... 
</security:authentication-manager> 

<bean id="customizedFormLoginFilter" 
    class="com.somecompany.security.web.CustomFormLoginFilter"> 
<property name="authenticationManager" ref="authenticationManager"/> 
... 
</bean>