此版本仍在开发中,尚未被视为稳定版本。对于最新的稳定版本,请使用 Spring Security 6.4.1! |
身份验证服务
这将创建 Spring Security 的ProviderManager
类,该类需要配置一个或多个AuthenticationProvider
实例。
这些可以使用名称空间提供的语法元素创建,也可以是标准的 bean 定义,使用authentication-provider
元素。
<authentication-manager>
每个使用命名空间的 Spring Security 应用程序都必须在某处包含此元素。
它负责注册AuthenticationManager
,它为应用程序提供身份验证服务。
创建AuthenticationProvider
实例应该是此元素的子元素。
<authentication-manager> 属性
-
别名此属性允许您为内部实例定义别名,以便在您自己的配置中使用。
-
erase-credentials如果设置为 true,则 AuthenticationManager 将在用户通过身份验证后尝试清除返回的 Authentication 对象中的任何凭证数据。 从字面上看,它映射到
eraseCredentialsAfterAuthentication
属性的ProviderManager
.
-
观察注册表引用对
ObservationRegistry
用于FilterChain
和相关组件
-
id 此属性允许您为内部实例定义 id 以在您自己的配置中使用。 它与 alias 元素相同,但为使用 id 属性的元素提供更一致的体验。
<authentication-provider>
除非与ref
属性,此元素是配置DaoAuthenticationProvider
.DaoAuthenticationProvider
从UserDetailsService
并将用户名/密码组合与 login 时提供的值进行比较。
这UserDetailsService
instance 可以通过使用可用的命名空间元素 (jdbc-user-service
或使用user-service-ref
属性指向应用程序上下文中其他位置定义的 bean)。
<authentication-provider> 属性
-
裁判定义对实现 Spring 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"/>
-
用户服务引用对实现 UserDetailsService 的 Bean 的引用,该 Bean 可以使用标准 Bean 元素或自定义 user-service 元素创建。
<jdbc-用户服务>
导致创建基于 JDBC 的 UserDetailsService。
<jdbc-user-service> 属性
默认值为
select username, authority from authorities where username = ?
-
缓存引用定义对用于 UserDetailsService 的缓存的引用。
-
数据源引用提供所需表的 DataSource 的 bean ID。
-
id 一个 Bean 标识符,用于引用上下文中其他位置的 Bean。
-
角色前缀将添加到从持久性存储加载的角色字符串中的非空字符串前缀(默认值为 “ROLE_”)。 在默认值为非空的情况下,使用值 “none” 表示无前缀。
-
users-by-username-查询一个 SQL 语句,用于查询给定用户名的用户名、密码和启用状态。 默认值为
select username, password, enabled from users where username = ?
<密码编码器>
可以选择将身份验证提供程序配置为使用密码编码器,如 Password Storage 中所述。
这将导致 bean 被注入适当的PasswordEncoder
实例。