|
对于最新的稳定版本,请使用 Spring Security 7.0.4! |
认证服务
这创建了Spring Security的ProviderManager类的一个实例,该实例需要配置一个包含一个或多个AuthenticationProvider实例的列表。
这些提供者可以使用命名空间提供的语法元素进行创建,也可以是标准的bean定义,并通过authentication-provider元素标记为添加到列表中。
<authentication-manager>
每个使用命名空间的Spring Security应用程序都必须在某个地方包含这个元素。它负责注册提供身份验证服务给应用的AuthenticationManager。所有创建AuthenticationProvider实例的所有元素都应该作为该元素的子元素。
<authentication-manager> 属性
-
别名 此属性允许您定义内部实例的别名名称,以便在您的配置中使用。
-
擦除凭据 如果设置为 true,AuthenticationManager 将在用户通过身份验证后,尝试清除返回的 Authentication 对象中的任何凭据数据。 字面上,它映射到
eraseCredentialsAfterAuthentication属性,该属性属于ProviderManager。
-
observation-registry-ref 一个对用于
ObservationRegistry及相关组件的FilterChain的引用
-
id
该属性允许您为内部实例定义一个 id,以便在您的配置中使用。
它与 alias 元素相同,但提供了与使用 id 属性的元素更一致的体验。
<authentication-provider>
除非使用了ref属性,否则该元素是配置DaoAuthenticationProvider的快捷方式。DaoAuthenticationProvider从UserDetailsService加载用户信息,并将用户名/密码组合与登录时提供的值进行比较。UserDetailsService实例可以通过使用可用命名空间元素(jdbc-user-service)定义,或者通过使用user-service-ref属性来指向应用上下文中其他地方定义的bean。
<authentication-provider> 属性
-
ref 定义了一个引用Spring Bean的元素,该Bean实现了
AuthenticationProvider接口。
如果您已经编写了自己的AuthenticationProvider实现(或者出于某些原因需要将Spring Security自身实现之一作为传统bean进行配置),那么您可以使用以下语法将其添加到内部ProviderManager的列表中:
<security:authentication-manager>
<security:authentication-provider ref="myAuthenticationProvider" />
</security:authentication-manager>
<bean id="myAuthenticationProvider" class="com.something.MyAuthenticationProvider"/>
-
user-service-ref
一个实现UserDetailsService接口的bean引用,可以使用标准的bean元素或自定义user-service元素来创建。
<jdbc-user-service>
基于JDBC的UserDetailsService的创建。
<jdbc-user-service> 属性
The default is
select username, authority from authorities where username = ?
-
cache-ref 定义一个用于UserDetailsService的缓存引用。
-
data-source-ref 提供所需表的DataSource的bean ID。
-
id
一个bean标识符,用于在上下文中其他地方引用该bean。
-
角色前缀
一个非空字符串前缀,将在从持久存储加载的角色字符串前添加该前缀(默认值为 "ROLE_")。
在默认值是非空的情况下,使用 "none" 以去掉前缀。
-
users-by-username-query 一个用于根据用户名查询用户名、密码和启用状态的SQL语句。默认值是
select username, password, enabled from users where username = ?