此版本仍在开发中,尚未被视为稳定版本。对于最新的稳定版本,请使用 Spring Security 6.4.1! |
Web 应用程序安全
<debug>
启用 Spring Security 调试基础结构。 这将提供人类可读的 (多行) 调试信息,以监控进入安全过滤器的请求。 这可能包括敏感信息,例如请求参数或标头,并且只能在开发环境中使用。
<http>
如果您使用<http>
元素中,一个FilterChainProxy
创建名为“springSecurityFilterChain”的 Bean,并使用元素中的配置在FilterChainProxy
.
从 Spring Security 3.1 开始,额外的http
元素可用于添加额外的过滤器链[1]有关如何从web.xml
].
一些核心过滤器始终在过滤器链中创建,而其他过滤器将根据存在的属性和子元素添加到堆栈中。
标准过滤器的位置是固定的(参见命名空间介绍中的过滤器顺序表),当用户必须在FilterChainProxy
豆。
当然,如果您需要完全控制配置,您仍然可以执行此作。
所有需要引用AuthenticationManager
将自动注入 namespace 配置创建的内部实例。
每<http>
namespace 块总是创建一个SecurityContextPersistenceFilter
一ExceptionTranslationFilter
以及FilterSecurityInterceptor
.
这些是固定的,不能用替代品代替。
<http> 属性
的<http>
元素控制核心过滤器上的一些属性。
-
访问决策管理器引用Optional 属性,用于指定
AccessDecisionManager
实现,该实现应用于授权 HTTP 请求。 默认情况下,一个AffirmativeBased
implementation 用于RoleVoter
以及一个AuthenticatedVoter
.
-
身份验证管理器引用对
AuthenticationManager
用于FilterChain
由此 HTTP 元素创建。
-
观察注册表引用对
ObservationRegistry
用于FilterChain
和相关组件
-
自动配置自动注册登录表单、BASIC 认证、注销服务。 如果设置为 “true”,则添加所有这些功能(尽管您仍然可以通过提供相应的元素来自定义每个功能的配置)。 如果未指定,则默认为 “false”。 不建议使用此属性。 请改用显式配置元素以避免混淆。
-
创建会话控制 Spring Security 类创建 HTTP 会话的急切程度。 选项包括:
-
always
- 如果不存在会话,Spring Security 将主动创建一个会话。 -
ifRequired
- Spring Security 将仅在需要会话时才创建会话(默认值)。 -
never
- Spring Security 永远不会创建会话,但如果应用程序创建会话,则会使用会话。 -
stateless
- Spring Security 不会创建会话并忽略该会话以获取 SpringAuthentication
.
-
-
disable-url-rewriting (禁用 url 重写)防止将会话 ID 附加到应用程序中的 URL。 如果此属性设置为
true
. 默认值为true
.
-
入口点引用通常
AuthenticationEntryPoint
used 将根据已配置的身份验证机制进行设置。 此属性允许通过定义自定义的AuthenticationEntryPoint
bean,它将启动身份验证过程。
-
jaas-api 配置如果可用,则以
Subject
收购自JaasAuthenticationToken
这是通过添加JaasApiIntegrationFilter
bean 添加到堆栈中。 默认为false
.
-
名字Bean 标识符,用于在上下文中的其他位置引用 Bean。
-
每次请求一次对应于
observeOncePerRequest
的属性FilterSecurityInterceptor
. 默认为false
.
-
filter-all-dispatcher-types对应于
shouldFilterAllDispatcherTypes
属性的AuthorizationFilter
.在以下情况下不起作用use-authorization-manager=false
. 默认为true
.
-
模式为 http 元素定义模式可控制请求,这些请求将通过它定义的过滤器列表进行过滤。 解释取决于配置的 request-matcher。 如果未定义模式,则将匹配所有请求,因此应首先声明最具体的模式。
-
领域设置用于基本身份验证的领域名称(如果启用)。 对应于
realmName
属性BasicAuthenticationEntryPoint
.
-
请求匹配器定义
RequestMatcher
策略FilterChainProxy
以及由intercept-url
匹配传入请求。 选项当前为mvc
,ant
,regex
和ciRegex
,对于 Spring MVC,分别为 ant、regular-expression 和 event-insensitive regular-expression。 使用其 pattern、method 和 servlet-path 属性为每个 intercept-url 元素创建一个单独的实例。 Ant 路径使用AntPathRequestMatcher
,则使用RegexRequestMatcher
对于 Spring MVC 路径,匹配MvcRequestMatcher
被使用。 有关如何执行匹配的更多详细信息,请参阅这些类的 Javadoc。 如果 Classpath 中存在 Spring MVC,则 MVC 是默认策略,如果没有,则使用 Ant 路径。
-
请求匹配器引用对实现
RequestMatcher
这将确定此FilterChain
应该使用。 这是 pattern 的更强大的替代方案。
-
安全请求模式可以映射到空的过滤器链,方法是将此属性设置为
none
. 不会应用任何安全性,并且 Spring Security 的任何功能都不可用。
-
security-context-repository-ref 的允许注入自定义
SecurityContextHolderStrategy
到SecurityContextPersistenceFilter
,SecurityContextHolderFilter
,BasicAuthenticationFilter
,UsernamePasswordAuthenticationFilter
,ExceptionTranslationFilter
,LogoutFilter
等。
-
安全上下文显式保存如果为 true,则使用
SecurityContextHolderFilter
而不是SecurityContextPersistenceFilter
. 需要显式保存
-
security-context-repository-ref 的允许注入自定义
SecurityContextRepository
到SecurityContextPersistenceFilter
.
-
servlet api-provision提供
HttpServletRequest
安全方法,例如isUserInRole()
和getPrincipal()
这些 API 是通过添加SecurityContextHolderAwareRequestFilter
bean 添加到堆栈中。 默认为true
.
-
使用表达式在
access
属性,如基于表达式的访问控制一章中所述。 默认值为 true。
<access-denied-handler>
此元素允许您设置errorPage
属性为默认值AccessDeniedHandler
由ExceptionTranslationFilter
、使用 error-page 属性,或者使用 ref 属性提供您自己的实现。
这在 ExceptionTranslationFilter 一节中有更详细的讨论。
<cors>
此元素允许配置CorsFilter
.
如果没有CorsFilter
或CorsConfigurationSource
,并且 Spring MVC 位于类路径上,则HandlerMappingIntrospector
用作CorsConfigurationSource
.
<cors> 属性
的<cors>
元素控制 headers 元素。
-
裁判指定 Bean 名称的 Optional 属性
CorsFilter
.
-
cors-configuration-source-ref指定 Bean 名称的 Optional 属性
CorsConfigurationSource
注入到CorsFilter
由 XML 命名空间创建。
<headers>
此元素允许配置要与响应一起发送的其他 (安全) 标头。 它可以轻松配置多个标头,还允许通过 header 元素设置自定义标头。 其他信息,可以在参考的 Security Headers 部分找到。
-
Cache-Control
,Pragma
和Expires
- 可以使用 cache-control 元素进行设置。 这可确保浏览器不会缓存受保护的页面。 -
Strict-Transport-Security
- 可以使用 hsts 元素进行设置。 这可确保浏览器自动请求 HTTPS 以用于将来的请求。 -
X-Frame-Options
- 可以使用 frame-options 元素进行设置。 X-Frame-Options 标头可用于防止点击劫持攻击。 -
X-XSS-Protection
- 可以使用 xss-protection 元素进行设置。 浏览器可以使用 X-XSS-Protection 标头进行基本控制。 -
X-Content-Type-Options
- 可以使用 content-type-options 元素进行设置。 X-Content-Type-Options 标头可防止 Internet Explorer 对远离声明的 content-type 的响应进行 MIME 探查。 这也适用于 Google Chrome 下载扩展程序时。 -
Public-Key-Pinning
或Public-Key-Pinning-Report-Only
- 可以使用 hpkp 元素进行设置。 这允许 HTTPS 网站抵御攻击者使用错误颁发或其他欺诈性证书的假冒。 -
Content-Security-Policy
或Content-Security-Policy-Report-Only
- 可以使用 content-security-policy 元素进行设置。内容安全策略 (CSP) 是 Web 应用程序可以用来缓解内容注入漏洞的一种机制,例如跨站点脚本 (XSS)。 -
Referrer-Policy
- 可以使用 referrer-policy 元素进行设置,Referrer-Policy 是 Web 应用程序可以用来管理 referrer 字段的一种机制,该字段包含用户所在的最后一个页面。 -
Feature-Policy
- 可以使用 feature-policy 元素进行设置,Feature-Policy 是一种机制,允许 Web 开发人员有选择地启用、禁用和修改浏览器中某些 API 和 Web 功能的行为。 -
Cross-Origin-Opener-Policy
- 可以使用 cross-origin-opener-policy 元素进行设置,Cross-Origin-Opener-Policy 是一种机制,允许您确保顶级文档不会与跨源文档共享浏览上下文组。 -
Cross-Origin-Embedder-Policy
- 可以使用 cross-origin-embedder-policy 元素进行设置,Cross-Origin-Embedder-Policy 是一种机制,可防止文档加载任何未明确授予文档权限的跨域资源。 -
Cross-Origin-Resource-Policy
- 可以使用 cross-origin-resource-policy 元素进行设置,Cross-Origin-Resource-Policy 是一种机制,它传达了浏览器阻止对给定资源的无 cors 跨源/跨站点请求的愿望。
<headers> 属性
的<headers>
元素控制 headers 元素。
-
默认值-已禁用可选属性,指定禁用默认的 Spring Security 的 HTTP 响应 Headers。 默认值为 false (包括默认 headers)。
-
禁用指定禁用 Spring Security 的 HTTP 响应标头的可选属性。 默认值为 false (启用标头)。
<hsts>
启用后,将 Strict-Transport-Security 标头添加到任何安全请求的响应中。 这允许服务器指示浏览器自动使用 HTTPS 来处理将来的请求。
<hsts> 属性
-
禁用指定是否应禁用 Strict-Transport-Security。 默认为 false。
-
include-sub-domains (包含子域)指定是否应包含子域。 默认为 true。
-
最大年龄秒指定应将主机视为已知 HSTS 主机的最长时间。 默认 1 年。
-
请求匹配器引用用于确定是否应设置 Headers 的 RequestMatcher 实例。 默认值为 HttpServletRequest.isSecure() 为 true。
-
预加载指定是否应包含 preload。 默认为 false。
<hpkp>
启用后,将 Public Key Pinning Extension for HTTP 标头添加到任何安全请求的响应中。 这允许 HTTPS 网站抵御攻击者使用错误颁发或其他欺诈性证书的假冒。
<hpkp> 属性
-
禁用指定是否应禁用 HTTP 公钥固定 (HPKP)。 默认为 true。
-
include-sub-domains (包含子域)指定是否应包含子域。 默认为 false。
-
最大年龄秒设置 Public-Key-Pins 标头的 max-age 指令的值。 默认 60 天。
-
仅限报告指定浏览器是否应仅报告 pin 验证失败。 默认为 true。
-
report-uri指定浏览器应向其报告 pin 验证失败的 URI。
<内容安全策略>
启用后,将内容安全策略 (CSP) 标头添加到响应中。 CSP 是 Web 应用程序可以用来缓解内容注入漏洞的一种机制,例如跨站点脚本 (XSS)。
<content-security-policy> 属性
-
策略指令Content-Security-Policy 标头的安全策略指令,或者如果 report-only 设置为 true,则使用 Content-Security-Policy-Report-Only 标头。
-
仅限报告设置为 true,以启用 Content-Security-Policy-Report-Only 标头,仅用于报告策略冲突。 默认为 false。
<referrer-policy>
启用后,将 Referrer Policy 标头添加到响应中。
<功能策略>
启用后,将 Feature Policy 标头添加到响应中。
<frame-options>
启用后,会将 X-Frame-Options 标头添加到响应中,这将允许较新的浏览器进行一些安全检查并防止点击劫持攻击。
<frame-options> 属性
-
禁用如果禁用,则不会包含 X-Frame-Options 标头。 默认为 false。
-
政策
-
DENY
页面无法显示在框架中,无论哪个站点尝试这样做。 这是指定 frame-options-policy 时的默认值。 -
SAMEORIGIN
页面只能显示在与页面本身同源的框架中
换句话说,如果指定 DENY,则不仅在从其他站点加载时尝试在框架中加载页面会失败,而且从同一站点加载时,尝试加载页面也会失败。 另一方面,如果指定 SAMEORIGIN,则只要在框架中包含该页面的站点与提供该页面的站点相同,您仍可以在框架中使用该页面。
-
<permissions-policy>
将 Permissions-Policy 标头添加到响应中。
<xss-protection>
将 X-XSS-Protection 标头添加到响应中,以帮助防止反射/类型 1 跨站点脚本 (XSS) 攻击。 这绝不是对 XSS 攻击的全面保护!
<xss-protection> 属性
-
xss-protection-disabled 已禁用不要包含用于反射/Type-1 跨站点脚本 (XSS) 保护的标头。
-
xss-protection-header-值显式设置反射/Type-1 跨站点脚本 (XSS) 标头的值。 以下之一: “0”, “1”, “1;mode=block“的默认为 “0”。
<内容类型选项>
将值为 nosniff 的 X-Content-Type-Options 标头添加到响应中。 这将禁用 IE8+ 和 Chrome 扩展的 MIME 探查。
<content-type-options> 的父元素
<匿名>
<csrf>
此元素将向应用程序添加跨站点请求伪造程序 (CSRF) 保护。 它还更新了默认的 RequestCache,以仅在身份验证成功后重放 “GET” 请求。 其他信息可以在参考的跨站点请求伪造 (CSRF) 部分找到。
<csrf> 属性
-
禁用指定禁用 Spring Security 的 CSRF 保护的可选属性。 默认值为 false (启用 CSRF 保护)。 强烈建议启用 CSRF 保护。
-
令牌存储库引用要使用的 CsrfTokenRepository。 默认值为
HttpSessionCsrfTokenRepository
.
-
请求处理程序引用可选的
CsrfTokenRequestHandler
使用。默认值为CsrfTokenRequestAttributeHandler
.
-
请求匹配器引用RequestMatcher 实例,用于确定是否应应用 CSRF。 默认为除 “GET”、“TRACE”、“HEAD”、“OPTIONS” 之外的任何 HTTP 方法。
<自定义过滤器>
此元素用于将过滤器添加到过滤器链中。
它不会创建任何其他 bean,但用于选择 type 为jakarta.servlet.Filter
它已经在应用程序上下文中定义,并将其添加到 Spring Security 维护的过滤器链中的特定位置。
完整的详细信息可以在 命名空间 章节中找到。
<表达式处理程序>
<表单登录>
用于添加UsernamePasswordAuthenticationFilter
添加到过滤器堆栈中,并将LoginUrlAuthenticationEntryPoint
添加到应用程序上下文中以按需提供身份验证。
这将始终优先于其他命名空间创建的入口点。
如果未提供任何属性,则会在 URL “/login” 处自动生成一个登录页面[2]可以使用<form-login>
属性.
<form-login> 属性
-
始终使用默认目标如果设置为
true
,则用户将始终从 default-target-url 给定的值开始,无论他们如何到达登录页面。 映射到alwaysUseDefaultTargetUrl
的属性UsernamePasswordAuthenticationFilter
. 默认值为false
.
-
身份验证详细信息源引用对
AuthenticationDetailsSource
将由 Authentication 过滤器使用
-
authentication-failure-handler-ref (身份验证失败处理程序引用)可用作 authentication-failure-url 的替代方法,让您在身份验证失败后完全控制导航流。 该值应为
AuthenticationFailureHandler
bean 中。
-
身份验证失败 URL映射到
authenticationFailureUrl
的属性UsernamePasswordAuthenticationFilter
. 定义浏览器在登录失败时将重定向到的 URL。 默认为/login?error
,这将由自动登录页面生成器自动处理,并重新呈现带有错误消息的登录页面。
-
authentication-success-handler-ref (身份验证成功处理程序引用)这可以用作 default-target-url 和 always-use-default-target 的替代方法,让您在成功进行身份验证后完全控制导航流。 该值应为
AuthenticationSuccessHandler
bean 中。 默认情况下,SavedRequestAwareAuthenticationSuccessHandler
使用并注入 default-target-url 。
-
默认目标 URL映射到
defaultTargetUrl
的属性UsernamePasswordAuthenticationFilter
. 如果未设置,则默认值为 “/” (应用程序根目录)。 如果用户在尝试访问受保护资源时未被要求登录,则登录后将被带到此 URL,此时他们将被带到最初请求的 URL。
-
登录页面应用于呈现登录页面的 URL。 映射到
loginFormUrl
属性的LoginUrlAuthenticationEntryPoint
. 默认为 “/login”。
-
登录处理 URL映射到
filterProcessesUrl
的属性UsernamePasswordAuthenticationFilter
. 默认值为 “/login”。
-
密码参数包含密码的请求参数的名称。 默认为 “password”。
-
username-parameter (用户名参数)包含 username 的请求参数的名称。 默认为 “username”。
-
authentication-success-forward-url (身份验证成功转发 URL)映射 a
ForwardAuthenticationSuccessHandler
自authenticationSuccessHandler
的属性UsernamePasswordAuthenticationFilter
.
-
身份验证失败转发 URL映射 a
ForwardAuthenticationFailureHandler
自authenticationFailureHandler
的属性UsernamePasswordAuthenticationFilter
.
<oauth2-login>
OAuth 2.0 登录功能使用 OAuth 2.0 和/或 OpenID Connect 1.0 提供程序配置身份验证支持。
<oauth2-login> 属性
-
客户端注册存储库引用对
ClientRegistrationRepository
.
-
访问令牌响应客户端引用对
OAuth2AccessTokenResponseClient
.
-
用户服务引用对
OAuth2UserService
.
-
oidc-用户服务引用对 OpenID Connect 的引用
OAuth2UserService
.
-
登录处理 URL筛选器处理身份验证请求的 URI。
-
登录页面用于将用户发送到登录的 URI。
-
authentication-success-handler-ref (身份验证成功处理程序引用)对
AuthenticationSuccessHandler
.
-
authentication-failure-handler-ref (身份验证失败处理程序引用)对
AuthenticationFailureHandler
.
-
jwt-decoder-factory-ref对
JwtDecoderFactory
使用者OidcAuthorizationCodeAuthenticationProvider
.
<oauth2-client>
<client-registrations>
向 OAuth 2.0 或 OpenID Connect 1.0 提供程序注册 (ClientRegistration) 的客户端的容器元素。
<客户端注册>
表示向 OAuth 2.0 或 OpenID Connect 1.0 提供程序注册的客户端。
<client-registration> 属性
-
注册 ID唯一标识
ClientRegistration
.
-
客户端 ID客户端标识符。
-
客户端密钥客户端密钥。
-
客户端身份验证方法用于向 Provider 验证 Client 的方法。 支持的值为 client_secret_basic、client_secret_post、private_key_jwt、client_secret_jwt 和 none(公共客户端)。
-
重定向 URI客户端已注册的重定向 URI,在最终用户对客户端进行身份验证和授权访问后,授权服务器会将最终用户的用户代理重定向到该 URI。
-
范围客户端在授权请求流程中请求的范围,例如 openid、email 或 profile。
-
客户端名称用于客户端的描述性名称。 该名称可能在某些情况下使用,例如在自动生成的登录页面中显示客户端的名称时。
-
提供商 ID对关联提供程序的引用。可以引用
<provider>
元素或使用常见提供程序之一(Google、GitHub、Facebook、Okta)。
<提供商>
OAuth 2.0 或 OpenID Connect 1.0 提供者的配置信息。
<provider> 属性
-
提供商 ID唯一标识提供程序的 ID。
-
令牌 URI授权服务器的令牌端点 URI。
-
用户信息-URI用于访问经过身份验证的最终用户的声明/属性的 UserInfo Endpoint URI。
-
用户信息身份验证方法将访问令牌发送到 UserInfo Endpoint 时使用的身份验证方法。 支持的值为 header、form 和 query。
-
用户信息用户名属性UserInfo Response 中返回的属性的名称,该属性引用最终用户的 Name 或 Identifier。
-
jwk-set-uri用于从授权服务器检索 JSON Web 密钥 (JWK) 集的 URI,其中包含用于验证 ID 令牌的 JSON Web 签名 (JWS) 的加密密钥,以及可选的 UserInfo 响应。
<oauth2-resource-server>
<opaque-token>
表示将授权不透明令牌的 OAuth 2.0 资源服务器
<opaque-token> 属性
-
内省器-参考对
OpaqueTokenIntrospector
.这是一个更大的组件,它会覆盖introspection-uri
,client-id
和client-secret
.
-
内省 URIIntrospection Uri 用于内省不透明令牌的详细信息。应附有
client-id
和client-secret
.
-
客户端 ID用于对提供的
introspection-uri
.
-
客户端密钥用于对提供的
introspection-uri
.
-
身份验证转换器引用对
OpaqueTokenAuthenticationConverter
.负责将成功的自省结果转换为Authentication
实例。
<依赖方注册>
向 SAML 2.0 身份提供程序注册 (ClientRegistration) 的信赖方的容器元素。
<依赖方注册>
表示向 SAML 2.0 身份提供程序注册的信赖方
<relian-party-registration> 属性
-
注册 ID唯一标识
RelyingPartyRegistration
.
-
元数据位置断言方元数据位置。
-
客户端 ID信赖方的 EntityID。
-
assertion-consumer-service-location (断言使用者服务位置)AssertionConsumerService 位置。相当于
<AssertionConsumerService Location="…"/>
在依赖方的<SPSSODescriptor>
.
-
assertion-consumer-service-binding 的 AssertionConsumerService 绑定。相当于
<AssertionConsumerService Binding="…"/>
在依赖方的<SPSSODescriptor>
. 支持的值为 POST 和 REDIRECT。
-
单点注销服务位置SingleLogoutService 位置。等效于 <SingleLogoutService Location=“...“/> 在依赖方的 <SPSSODescriptor>.
-
单点注销服务响应位置SingleLogoutService ResponseLocation 的 ResponseLocation 中。等效于 <SingleLogoutService ResponseLocation=“...“/> 在依赖方的 <SPSSODescriptor>.
-
单点注销服务绑定SingleLogoutService 绑定。等效于 <SingleLogoutService Binding=“...“/> 在依赖方的 <SPSSODescriptor>. 支持的值为 POST 和 REDIRECT。
-
断言方 ID对关联断言方的引用。必须引用
<asserting-party>
元素。
<asserting-party>
SAML 2.0 断言方的配置信息。
<asserting-party> 属性
-
断言方 ID唯一标识断言方的 ID。
-
实体 ID断言方的 EntityID
-
want-authn-requests-signed 请求这
WantAuthnRequestsSigned
设置,指示断言方希望依赖方应签署AuthnRequest
在发送之前。
-
单点登录服务位置SingleSignOnService 位置。
-
服务绑定单点登录SingleSignOnService 绑定。 支持的值为 POST 和 REDIRECT。
-
签名算法的列表
org.opensaml.saml.ext.saml2alg.SigningMethod
此断言方的算法,按优先顺序排列。
-
单点注销服务位置SingleLogoutService 位置。等效于 <SingleLogoutService Location=“...“/> 在断言方的 <IDPSSODescriptor> 中。
-
单点注销服务响应位置SingleLogoutService ResponseLocation 的 ResponseLocation 中。等效于 <SingleLogoutService ResponseLocation=“...“/> 在断言方的 <IDPSSODescriptor> 中。
-
单点注销服务绑定SingleLogoutService 绑定。等效于 <SingleLogoutService Binding=“...“/> 在断言方的 <IDPSSODescriptor> 中。 支持的值为 POST 和 REDIRECT。
<http-basic>
<拦截 url>
此元素用于定义应用程序感兴趣的 URL 模式集,并配置应如何处理这些模式。
它用于构造FilterInvocationSecurityMetadataSource
由FilterSecurityInterceptor
.
它还负责配置ChannelProcessingFilter
例如,如果特定 URL 需要通过 HTTPS 访问。
将指定的模式与传入请求匹配时,将按照声明元素的顺序进行匹配。
因此,最具体的模式应该放在最前面,最通用的模式应该放在最后。
<intercept-url> 属性
-
访问列出将存储在
FilterInvocationSecurityMetadataSource
对于定义的 URL 模式/方法组合。 这应该是安全配置属性(例如角色名称)的逗号分隔列表。
-
方法HTTP 方法,将与模式和 servlet 路径(可选)结合使用,以匹配传入请求。 如果省略,则任何方法都将匹配。 如果指定了带和不带方法的相同模式,则特定于方法的匹配将优先。
-
模式定义 URL 路径的模式。 内容将取决于
request-matcher
属性,因此如果 Spring MVC 在 Classpath 中,则默认为 MVC 匹配器。
-
请求匹配器引用对
RequestMatcher
将用于确定此<intercept-url>
被使用。
-
requires-channel可以是 “http” 或 “https”,具体取决于应分别通过 HTTP 还是 HTTPS 访问特定 URL 模式。 或者,当没有首选项时,可以使用值 “any”。 如果此属性存在于任何
<intercept-url>
元素,则ChannelProcessingFilter
将添加到 Filter 堆栈中,并将其其他依赖项添加到 Application 上下文中。
如果<port-mappings>
配置,这将由SecureChannelProcessor
和InsecureChannelProcessor
bean 来确定用于重定向到 HTTP/HTTPS 的端口。
此属性对 filter-security-metadata-source 无效 |
-
servlet 路径Servlet 路径,将与模式和 HTTP 方法结合使用,以匹配传入请求。 此属性仅在 request-matcher 为 'mvc' 时适用。 此外,仅在以下 2 个用例中需要该值:1) 有 2 个或更多
HttpServlet
在ServletContext
映射以 开头 和 不同;2) 模式以已注册的相同值开始'/'
HttpServlet
path,不包括默认值 (root)HttpServlet
'/'
.
此属性对 filter-security-metadata-source 无效 |
<注销>
添加LogoutFilter
添加到筛选器堆栈中。
这配置了SecurityContextLogoutHandler
.
<logout> 属性
-
无效会话映射到
invalidateHttpSession
的SecurityContextLogoutHandler
. 默认为 “true”,因此会话将在注销时失效。
-
注销成功网址用户注销后将转到的目标 URL。 默认为 <form-login-login-page>/?logout(即 /login?logout)
设置此属性将注入
SessionManagementFilter
替换为SimpleRedirectInvalidSessionStrategy
配置了 Property。 当提交无效的会话 ID 时,将调用策略,并重定向到配置的 URL。
-
注销 URL将导致注销的 URL(即,将由过滤器处理的 URL)。 默认为 “/logout”。
-
成功处理程序引用可用于提供
LogoutSuccessHandler
注销后将调用该 API 来控制导航。
<saml2-login>
SAML 2.0 登录功能使用 SAML 2.0 服务提供商配置身份验证支持。
<saml2-login> 属性
-
依赖方注册存储库引用对
RelyingPartyRegistrationRepository
.
-
身份验证请求存储库引用对
Saml2AuthenticationRequestRepository
.
-
身份验证请求上下文解析器引用对
Saml2AuthenticationRequestResolver
.
-
身份验证转换器引用对
AuthenticationConverter
.
-
登录处理 URL筛选器处理身份验证请求的 URI。
-
登录页面用于将用户发送到登录的 URI。
-
authentication-success-handler-ref (身份验证成功处理程序引用)对
AuthenticationSuccessHandler
.
-
authentication-failure-handler-ref (身份验证失败处理程序引用)对
AuthenticationFailureHandler
.
-
身份验证管理器引用对
AuthenticationManager
.
<saml2-logout>
SAML 2.0 单点注销功能配置了对 RP 和 AP 发起的 SAML 2.0 单点注销的支持。
<saml2-logout> 属性
-
注销 URL信赖方或断言方可以触发注销的 URL。
-
注销请求 URL断言方可以发送 SAML 2.0 注销请求的 URL。
-
注销响应 URL断言方可以发送 SAML 2.0 注销响应的 URL。
-
依赖方注册存储库引用对
RelyingPartyRegistrationRepository
.
-
logout-request-validator-ref (登录请求验证器引用)对
Saml2LogoutRequestValidator
.
-
注销请求解析器引用对
Saml2LogoutRequestResolver
.
-
注销请求存储库引用对
Saml2LogoutRequestRepository
.
-
logout-response-validator-ref (登录响应验证器引用)对
Saml2LogoutResponseValidator
.
-
logout-response-resolver-ref对
Saml2LogoutResponseResolver
.
<端口映射>
默认情况下,的PortMapperImpl
将添加到配置中,以用于重定向到安全和不安全的 URL。
此元素可以选择用于覆盖该类定义的默认映射。
每个孩子<port-mapping>
元素定义一对 HTTP:HTTPS 端口。
默认映射为 80:443 和 8080:8443。
覆盖这些参数的示例可以在 重定向到 HTTPS 中找到。
<记住我>
添加RememberMeAuthenticationFilter
添加到堆栈中。
这反过来将配置为TokenBasedRememberMeServices
一个PersistentTokenBasedRememberMeServices
或用户指定的 bean 实现RememberMeServices
取决于属性设置。
<remember-me> 属性
-
authentication-success-handler-ref (身份验证成功处理程序引用)设置
authenticationSuccessHandler
属性RememberMeAuthenticationFilter
如果需要自定义导航。 该值应为AuthenticationSuccessHandler
bean 中。
-
数据源引用对
DataSource
豆。 如果已设置,则PersistentTokenBasedRememberMeServices
将使用并配置一个JdbcTokenRepositoryImpl
实例。
-
remember-me-参数用于切换 remember-me 身份验证的请求参数的名称。 默认为 “remember-me”。 映射到 的 “parameter” 属性
AbstractRememberMeServices
.
-
钥匙映射到 的 “key” 属性
AbstractRememberMeServices
. 应设置为唯一值,以确保 remember-me cookie 仅在一个应用程序中有效[3]. 如果未设置,将生成安全随机值。 由于生成安全随机值可能需要一段时间,因此在使用“记住我”功能时,显式设置此值有助于缩短启动时间。
-
services-alias 的导出内部定义的
RememberMeServices
作为 Bean 别名,允许应用程序上下文中的其他 bean 使用它。
-
服务-ref允许完全控制
RememberMeServices
过滤器将使用的实现。 该值应为id
实现此接口的应用程序上下文中的 bean。 还应实施LogoutHandler
如果正在使用注销过滤器。
-
令牌存储库引用配置
PersistentTokenBasedRememberMeServices
但允许使用自定义PersistentTokenRepository
豆。
-
令牌有效性秒映射到
tokenValiditySeconds
的属性AbstractRememberMeServices
. 指定 remember-me Cookie 应有效的时间段(以秒为单位)。 默认情况下,它的有效期为 14 天。
-
用户服务引用remember-me 服务实现需要访问
UserDetailsService
,因此必须在应用程序上下文中定义一个。 如果只有一个,则命名空间配置将自动选择并使用它。 如果有多个实例,则可以指定一个 Beanid
显式使用此属性。
<request-cache> 元素
<会话管理>
会话管理相关功能是通过添加SessionManagementFilter
添加到筛选器堆栈中。
<session-management> 属性
-
身份验证策略显式调用将此属性设置为 true 意味着
SessionManagementFilter
不会注入,并且需要显式调用 SessionAuthenticationStrategy。
-
无效会话 URL设置此属性将注入
SessionManagementFilter
替换为SimpleRedirectInvalidSessionStrategy
配置了 Property。 当提交无效的会话 ID 时,将调用策略,并重定向到配置的 URL。
-
无效会话 URL允许注入 SessionManagementFilter 使用的 InvalidSessionStrategy 实例。 使用 this 或
invalid-session-url
属性,但不能同时共享两者。
-
会话身份验证错误 URL定义错误页面的 URL,当 SessionAuthenticationStrategy 引发异常时应显示该页面。 如果未设置,将向客户端返回未经授权的 (401) 错误代码。 请注意,如果在基于表单的登录期间发生错误,则此属性不适用,其中身份验证失败的 URL 将优先。
-
会话身份验证策略引用允许注入 SessionManagementFilter 使用的 SessionAuthenticationStrategy 实例
-
会话固定保护指示在用户进行身份验证时如何应用会话固定保护。 如果设置为 “none”,则不会应用任何保护。 “newSession”将创建一个新的空会话,仅迁移与 Spring Security 相关的属性。 “migrateSession” 将创建一个新会话并将所有会话属性复制到新会话中。 在 Servlet 3.1 (Java EE 7) 和更新的容器中,指定 “changeSessionId” 将保留现有会话并使用容器提供的会话固定保护 (HttpServletRequest#changeSessionId())。 在 Servlet 3.1 和更新的容器中默认为 “changeSessionId”,在较旧的容器中默认为 “migrateSession”。 如果在较旧的容器中使用 “changeSessionId”,则引发异常。
如果启用了会话固定保护,则
SessionManagementFilter
注入了适当配置的DefaultSessionAuthenticationStrategy
. 有关更多详细信息,请参阅此类的 Javadoc。
<并发控制>
添加了对并发会话控制的支持,允许对用户可以拥有的活动会话数施加限制。
一个ConcurrentSessionFilter
将创建,并且ConcurrentSessionControlAuthenticationStrategy
将与SessionManagementFilter
.
如果form-login
元素,则 Strategy 对象也将被注入到创建的身份验证过滤器中。
一个SessionRegistry
(一个SessionRegistryImpl
实例(除非用户希望使用自定义 bean)将创建供策略使用。
<concurrency-control> 属性
-
如果最大超出错误如果设置为 “true” ,则
SessionAuthenticationException
将在用户尝试超过允许的最大会话数时引发。 默认行为是使原始会话过期。
-
过期网址如果用户尝试使用已被并发会话控制器“过期”的会话,则由于用户已超过允许的会话数并已在其他位置再次登录,因此他们将被重定向到该 URL。 应设置,除非
exception-if-maximum-exceeded
已设置。 如果未提供任何值,则只会将过期消息直接写回响应。
-
过期网址允许注入 ConcurrentSessionFilter 使用的 ExpiredSessionStrategy 实例
-
最大会话数映射到
maximumSessions
的属性ConcurrentSessionControlAuthenticationStrategy
. 指定-1
作为支持无限会话的值。
-
会话注册表别名对内部会话注册表的引用以在您自己的 bean 或 admin 界面中使用也很有用。 您可以使用
session-registry-alias
属性,为其指定一个名称,您可以在配置中的其他位置使用该名称。
-
会话注册表引用用户可以提供自己的
SessionRegistry
使用session-registry-ref
属性。 其他并发会话控制 bean 将被连接起来以使用它。
<x509>
<filter-chain-map>
<filter-chain>
用于定义特定 URL 模式以及应用于与该模式匹配的 URL 的过滤器列表。 当多个 filter-chain 元素组装在一个列表中以配置 FilterChainProxy 时,最具体的模式必须放在列表的顶部,而大多数通用的模式放在底部。
<filter-chain> 属性
-
过滤器对实现
Filter
. 值 “none” 表示没有Filter
应该用于此FilterChain
.
-
模式一种将 RequestMatcher 与 request-matcher 结合使用的模式
-
请求匹配器引用对
RequestMatcher
这将用于确定是否有任何Filter
从filters
属性。
<filter-security-metadata-source>
用于显式配置FilterSecurityMetadataSource Bean 以与FilterSecurityInterceptor一起使用。 通常仅在显式配置 FilterChainProxy 而不是使用 <http> 元素时才需要。 使用的 intercept-url 元素应仅包含 pattern、method 和 access 属性。 任何其他作都将导致配置错误。
<filter-security-metadata-source> 属性
-
id 一个 Bean 标识符,用于引用上下文中其他位置的 Bean。
-
请求匹配器定义用于匹配传入请求的策略。 目前,选项包括 'ant' (用于 ant 路径模式)、用于正则表达式的 'regex' 和用于不区分大小写的正则表达式的 'ciRegex' 。
-
使用表达式允许在 <intercept-url> 元素的 'access' 属性中使用表达式,而不是传统的配置属性列表。 默认为 'true'。 如果启用,则每个属性都应包含一个布尔表达式。 如果表达式的计算结果为 'true',则将授予访问权限。
DefaultLoginPageGeneratingFilter
负责呈现登录页面,并将根据需要为普通表单登录和/或 OIDC 提供登录表单。PersistentTokenBasedRememberMeServices
,其中令牌存储在服务器端。