|
此版本仍在开发中,尚未被视为稳定版本。如需最新稳定版本,请使用 Spring Security 7.0.4! |
web应用安全
<debug>
启用Spring Security调试基础设施。 这将提供可读性较强的(多行)调试信息,以监控进入安全过滤器的请求。 这可能包括敏感信息,例如请求参数或标头,并且仅应在开发环境中使用。
<http>
如果在应用程序中使用了<http>元素,将会创建一个名为"springSecurityFilterChain"的FilterChainProxy bean,并且该元素内的配置将用于构建FilterChainProxy中的过滤器链。截至Spring Security 3。1, 额外的 http 元素可用于添加额外的过滤器链[1],以了解如何设置来自您的 web.xml 的映射。]某些核心过滤器总是会在过滤器链中创建,而其他过滤器则会根据存在的属性和子元素来添加到堆栈中。标准过滤器的位置是固定的(请参阅命名空间介绍中的过滤器顺序表),这消除了以往框架版本中用户必须在FilterChainProxy Bean 中显式配置过滤器链这一常见错误来源。您可以当然还可以这样做,如果您需要完全控制配置。
所有需要引用 AuthenticationManager 的过滤器,都将自动注入由命名空间配置创建的内部实例。
每个 <http> 命名空间块总是创建一个 SecurityContextPersistenceFilter,一个 ExceptionTranslationFilter 和一个 FilterSecurityInterceptor。
这些是固定的,不能用其他替代。
<http> 属性
<http> 元素的属性控制了一些核心过滤器的属性。
-
access-decision-manager-ref
可选属性,指定应使用的AccessDecisionManager实现的 ID,用于授权 HTTP 请求。
默认情况下使用一个AffirmativeBased实现,并包含一个RoleVoter和一个AuthenticatedVoter。
-
authentication-manager-ref
用于此http元素创建的AuthenticationManager所使用的FilterChain引用。
-
observation-registry-ref 一个对用于
ObservationRegistry及相关组件的FilterChain的引用
-
auto-config
自动注册登录表单、BASIC认证和注销服务。
如果设置为
-
创建会话 控制Spring Security类在何时创建HTTP会话的时机。 选项包括:
-
always- Spring Security将在不存在会话的情况下主动创建一个会话。 -
ifRequired- Spring Security 将只在需要时创建会话(默认值)。 -
never- Spring Security 将永远不会创建会话,但如果应用程序需要的话将使用会话。 -
stateless- Spring Security 将不会创建会话,并且在获取 SpringAuthentication时忽略会话。
-
-
disable-url-rewriting
防止会话ID被追加到应用程序中的URL。如果将此属性设置为true,客户端必须使用cookie。 默认值是true。
-
entry-point-ref
通常,根据已配置的认证机制,将会设置AuthenticationEntryPoint。此属性允许通过定义自定义的AuthenticationEntryPointbean来覆盖这种行为,从而启动认证过程。
-
jaas-api-provision
如果可用,将请求运行为从Subject获得的JaasAuthenticationToken。这可以通过向堆栈中添加一个JaasApiIntegrationFilterbean来实现。
默认值为false。
-
名称
用于在上下文中引用该bean的标识符。
-
once-per-request 对应于
observeOncePerRequest的FilterSecurityInterceptor属性。 默认值为false.
-
filter-all-dispatcher-types 对应于
shouldFilterAllDispatcherTypes的AuthorizationFilter属性。当use-authorization-manager=false时不生效。 默认值为true.
-
模式 定义了 http 元素的模式控制了将通过其定义的过滤器列表进行过滤的请求。 该解释依赖于配置的 request-matcher。 如果没有定义模式,所有请求都将匹配,因此应首先声明最具体的模式。
-
realm
设置用于基本身份验证的领域名称(如果启用)。 对应于realmName类上的BasicAuthenticationEntryPoint属性。
-
redirect-to-https-request-matcher-ref 一个实现
RequestMatcher接口的bean引用,用于确定哪些请求需要重定向到HTTPS。 这在例如希望本地运行HTTP而生产环境使用HTTPS时非常有帮助,可以通过请求头来判断。
-
request-matcher 定义了
RequestMatcher策略,该策略用于FilterChainProxy以及由intercept-url创建的 Bean,以匹配传入的请求。 当前选项包括mvc、ant、regex和ciRegex,分别对应 Spring MVC、ant、正则表达式和不区分大小写的正则表达式。 每个 intercept-url 元素都会创建单独的实例,并使用其 pattern、method 和 servlet-path 属性。 默认情况下,路径使用PathPatternRequestMatcher进行匹配;而正则表达式则使用RegexRequestMatcher进行匹配。 有关匹配的具体执行方式,请参阅这些类的 Javadoc 文档。 如果类路径中存在 Spring MVC,则 MVC 为默认策略;否则将使用 Ant 路径。
-
request-matcher-ref 一个实现
RequestMatcher接口的bean引用,用于确定是否应该使用此FilterChain。 这比模式更强大的一种替代方案。
-
安全 一个请求模式可以映射到空过滤器链,通过将此属性设置为
none。 不会应用任何安全措施,并且Spring Security的所有功能都将不可用。
-
security-context-repository-ref
允许将自定义的SecurityContextHolderStrategy注入到SecurityContextPersistenceFilter、SecurityContextHolderFilter、BasicAuthenticationFilter、UsernamePasswordAuthenticationFilter、ExceptionTranslationFilter、LogoutFilter以及其他过滤器中。
-
security-context-explicit-save 如果为 true,则使用
SecurityContextHolderFilter而不是SecurityContextPersistenceFilter。需要显式保存
-
security-context-repository-ref 允许将自定义的
SecurityContextRepository注入到SecurityContextPersistenceFilter中。
-
servlet-api-provision 提供
HttpServletRequest安全方法版本,例如isUserInRole()和getPrincipal(),这些方法通过在堆栈中添加一个SecurityContextHolderAwareRequestFilterbean实现。 默认值为true。
-
use-expressions 启用
access属性中的EL表达式,如在基于表达式的访问控制一章中所述。 默认值为true。
<access-denied-handler>
此元素允许您通过errorPage属性为AccessDeniedHandler使用的默认ExceptionTranslationFilter设置#nsa-access-denied-handler-error-page属性,或者使用#nsa-access-denied-handler-ref属性提供自己的实现。
这在关于xref page(异常转换过滤器)的章节中进行了更详细的讨论。
<cors>
此元素允许配置一个 CorsFilter。
必须指定一个 CorsFilter 或者一个 CorsConfigurationSource。
如果存在 Spring MVC,则会尝试查找其 CorsConfigurationSource。
<cors> 属性
The attributes on the <cors> element 控制 the headers element.
-
ref 可选属性,指定一个
CorsFilter的bean名称。
-
cors-configuration-source-ref 可选属性,用于指定要注入到由XML命名空间创建的
中的 bean名称。
<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-Content-Type-Options- 可以使用 content-type-options 元素来设置。 X-Content-Type-Options 头可以防止 Internet Explorer 从已声明的内容类型中 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) 是一种机制,网页应用程序可以通过这种方式来减轻内容注入漏洞的影响,比如跨站脚本攻击(XSS)。 -
Referrer-Policy- 可以通过 referrer-policy 元素进行设置,Referrer-Policy 是一个机制,网页应用程序可以通过它来管理 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 元素设置,https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cross-Origin-Resource-Policy是一种机制,用于传达一个愿望:浏览器阻止对给定资源的 no-cors 跨域/跨站请求。
<headers> 属性
The attributes on the <headers> element 控制 the headers element.
-
defaults-disabled 可选属性,用于禁用Spring Security的HTTP响应头。默认情况下为false(包含默认头部)。
-
禁用 可选属性,用于指定是否禁用Spring Security的HTTP响应头。默认值为false(启用头部)。
<hsts>
当启用时,会对任何安全请求添加 Strict-Transport-Security 头。 这允许服务器指示浏览器在未来请求中自动使用 HTTPS。
<hsts> 属性
-
禁用 指定是否禁用Strict-Transport-Security。默认为false。
-
include-sub-domains 指定是否包括子域名。 默认值为true。
-
max-age-seconds 指定主机应被视为已知的HSTS(HTTP严格传输安全)主机的最大时间长度。默认值为一年。
-
request-matcher-ref
The RequestMatcher 实例,用于确定是否应该设置该头信息。
默认情况下,如果 HttpServletRequest.isSecure() 为 true,则会设置该头信息。
-
预加载 指定是否包含预加载。默认为false。
<hpkp>
当启用时,会在任何安全请求的响应中添加 公共密钥锁定扩展(Public Key Pinning Extension for HTTP) 头部。 这允许 HTTPS 网站抵御使用误发或其它欺诈性证书进行的攻击者的假冒行为。
<hpkp> 属性
-
禁用
指定是否应禁用HTTP公共密钥绑定(HPKP)。默认值为true。
-
include-sub-domains 指定是否包含子域名。 默认值为 false。
-
max-age-seconds 设置 Public-Key-Pins 头的 max-age 指令的值。 默认 60 天。
-
仅报告模式
指定浏览器是否只在pin验证失败时进行报告。默认值为 true。
-
report-uri 指定浏览器应向其报告固定验证失败的URI。
<content-security-policy>
当启用时,会在响应中添加 内容安全策略(CSP) 头。 CSP 是一种机制,网页应用程序可以通过这种方式来减轻内容注入漏洞的风险,例如跨站脚本攻击(XSS)。
<content-security-policy> 属性
-
policy-directives 安全策略指令用于Content-Security-Policy头,或者如果report-only设置为true,则使用Content-Security-Policy-Report-Only头。
-
报告仅模式 将此属性设置为 true 可以启用 Content-Security-Policy-Report-Only 头,用于报告策略违规情况。 默认情况下为 false。
<referrer-policy>
当启用时,会在响应中添加 Referrer Policy 头。
<feature-policy>
启用时会在响应中添加 Feature Policy 头部。
<frame-options>
当启用时,会向响应添加X-Frame-Options头,这允许较新的浏览器执行一些安全检查并防止点击劫持攻击。
<frame-options> 属性
-
禁用 如果禁用,将不会包含X-Frame-Options头。 默认值为false。
-
policy
-
DENY该页面无法嵌入到框架中,无论尝试嵌入的站点是谁。 这是当指定了frame-options-policy时的默认设置。 -
SAMEORIGIN该页面只能嵌套显示在与自身相同源的框架中
换句话说,如果您指定 DENY,则不仅当页面从其他站点加载时尝试在框架中加载会失败,即使是从同一站点加载也会失败。 相反,如果指定 SAMEORIGIN,则只要包含该页面的站点与提供该页面的站点相同,您仍然可以在框架中使用该页面。
-
<permissions-policy>
向响应中添加Permissions-Policy 头部。
<xss-protection>
向响应中添加 X-XSS-Protection 头部,以辅助防止 反射 / 类型-1 跨站脚本(XSS)攻击。 这绝不是对 XSS 攻击的全面防护!
<xss-protection> 属性
-
xss-protection-disabled 不包含用于反射/类型-1跨站脚本攻击(XSS)保护的标头。
-
xss-protection-header-value
Explicitly set the value for 反射型/类型-1跨站脚本攻击(XSS)头.
可选值之一: "0", "1", "1; mode=block". 默认值为 "0".
<content-type-options>
在响应中添加 X-Content-Type-Options 头,并将其值设置为 nosniff。 这 禁用IE8及以上版本和Chrome扩展程序的MIME-sniffing。
<content-type-options>的父元素
<cross-origin-embedder-policy>
当启用时,会在响应中添加 Cross-Origin-Embedder-Policy 头。
<cross-origin-opener-policy>
当启用时,在响应中添加 Cross-Origin-Opener-Policy 头。
<cross-origin-resource-policy>
启用时,向响应中添加 跨源资源策略(Cross-Origin-Resource-Policy) 头。
<anonymous>
添加一个 AnonymousAuthenticationFilter 到栈中,并且添加一个 AnonymousAuthenticationProvider。
如果使用了 IS_AUTHENTICATED_ANONYMOUSLY 属性,则必需这样做。
<anonymous> 属性
-
启用 在默认命名空间设置下,匿名的“身份验证”功能会自动启用。您可以使用此属性禁用它。
-
密钥 提供者和过滤器之间共享的密钥。 通常不需要设置此值。 如果未设置,它将默认为一个安全的随机生成值。 这意味着设置此值可以改善使用匿名功能时的启动时间,因为安全随机值的生成可能需要一些时间。
-
用户名 The username that should be assigned to the anonymous request. This allows the principal to be identified, which may be important for logging and auditing. If unset, defaults to
anonymousUser.
<csrf>
此元素将为应用程序添加跨站请求伪造(CSRF)保护。 它还会更新默认的RequestCache,仅在成功身份验证后重播"GET"请求。 有关更多信息,请参阅参考中的跨站请求伪造(CSRF)部分。
<csrf> 属性
-
禁用
可选属性,指定是否禁用Spring Security的CSRF保护。默认情况下是禁用状态(即CSRF保护启用)。强烈建议保留CSRF保护功能。
-
token-repository-ref 使用的身份验证Tokens存储库。 默认值是
HttpSessionCsrfTokenRepository。
-
request-handler-ref 使用此可选的
CsrfTokenRequestHandler。默认值是CsrfTokenRequestAttributeHandler。
-
request-matcher-ref
The RequestMatcher 实例,用于确定是否应用 CSRF 保护。
默认情况下,除了
<custom-filter>
此元素用于向过滤器链中添加一个过滤器。
它不会创建任何额外的bean,而是从应用程序上下文中选择一个类型为jakarta.servlet.Filter的bean,并在Spring Security维护的过滤器链中的特定位置添加该过滤器。
有关更多信息,请参阅命名空间章节。
<expression-handler>
<form-login>
用于向过滤器堆栈添加一个UsernamePasswordAuthenticationFilter,并向应用程序上下文添加一个LoginUrlAuthenticationEntryPoint,以按需提供身份验证。
此配置将始终优先于其他命名空间创建的入口点。
如果未提供任何属性,系统将在 URL "/login" 处自动生成登录页面 [2]。可使用 <form-login> 属性自定义该行为。
<form-login> 属性
-
always-use-default-target
如果设置为true,用户将始终从default-target-url指定的值开始,无论他们是如何到达登录页面的。
映射到#nsa-form-login-default-target-url的alwaysUseDefaultTargetUrl属性。
默认值为UsernamePasswordAuthenticationFilter。
-
authentication-details-source-ref 参考一个
AuthenticationDetailsSource,该对象将被认证过滤器使用
-
authentication-failure-handler-ref 可以作为authentication-failure-url的替代方案,让您在认证失败后完全控制导航流程。 该值应该是应用程序上下文中一个
#nsa-form-login-authentication-failure-urlbean 的名称。
-
authentication-failure-url
映射到authenticationFailureUrl的UsernamePasswordAuthenticationFilter属性。
定义在登录失败时浏览器将被重定向到的URL。
默认值为/login?error,这将会自动由自动登录页面生成器处理,重新渲染登录页面并显示错误消息。
-
authentication-success-handler-ref
此属性可以作为替代方案,用于default-target-url和always-use-default-target,从而在成功认证后为您提供完整的导航流程控制。 值应该为应用程序上下文中一个#nsa-form-login-default-target-urlbean 的名称。
默认情况下,会使用并注入default-target-url的#nsa-form-login-always-use-default-target实现。
-
default-target-url 映射到
defaultTargetUrl的UsernamePasswordAuthenticationFilter属性。 如果没有设置,默认值是“/”(应用程序根目录)。 用户在登录后会被重定向到这个URL,前提是他们在尝试访问受保护资源时没有被要求进行登录;如果他们试图访问一个受保护的资源而需要登录,则会被重定向到原始请求的URL。
-
登录页面
用于渲染登录页面的 URL。
映射到
LoginUrlAuthenticationEntryPoint的loginFormUrl属性。默认值为 “/login”。
-
login-processing-url
映射到filterProcessesUrl的UsernamePasswordAuthenticationFilter属性。
默认值是"/login".
-
password-parameter 请求参数的名称,其中包含密码。 默认值为
-
用户名参数 请求参数的名称,该参数包含用户名。 默认值为
-
认证成功转发URL
将一个ForwardAuthenticationSuccessHandler映射到authenticationSuccessHandler的UsernamePasswordAuthenticationFilter属性。
-
authentication-failure-forward-url 将一个
ForwardAuthenticationFailureHandler映射到authenticationFailureHandler的UsernamePasswordAuthenticationFilter属性。
<oauth2-login>
The OAuth 2.0 登录 功能配置了使用 OAuth 2.0 和/或 OpenID Connect 1.0 提供者的身份验证支持。
<oauth2-login> 属性
-
client-registration-repository-ref
引用的ClientRegistrationRepository。
-
access-token-response-client-ref
参考OAuth2AccessTokenResponseClient。
-
user-service-ref 参考
OAuth2UserService。
-
oidc-user-service-ref 对 OpenID Connect 的引用
OAuth2UserService。
-
登录处理URL
The URI where the filter processes authentication requests.
-
登录页面
向用户发送以进行登录的URI。
-
authentication-success-handler-ref
AuthenticationSuccessHandler的引用。
-
authentication-failure-handler-ref 参考
AuthenticationFailureHandler。
-
jwt-decoder-factory-ref
JwtDecoderFactory的引用,该引用被OidcAuthorizationCodeAuthenticationProvider使用。
<oauth2-client>
<client-registrations>
一个容器元素,用于包含已注册(ClientRegistration)的客户端,这些客户端与OAuth 2.0或OpenID Connect 1.0提供者进行了注册。
<client-registration>
代表已注册到OAuth 2.0或OpenID Connect 1.0提供者的客户端。
<client-registration> 属性
-
注册标识符 The ID that uniquely identifies the
ClientRegistration.
-
client-id 客户端标识符。
-
客户端密钥 客户端秘密。
-
client-authentication-method
客户端与提供者进行身份验证的方法。支持的值包括 client_secret_basic, client_secret_post, private_key_jwt, client_secret_jwt 和 none (公开客户端)。
-
redirect-uri
The client’s registered redirect URI that the 授权服务器在终端用户完成身份验证并授权访问客户端后,将终端用户的用户代理重定向到的地址。
-
范围 客户端在授权请求流程中请求的范围(scope),例如openid、email或profile。
-
客户端名称
一个用于描述客户端的名称。
该名称可能在某些场景中使用,例如,在自动生成的登录页面上显示客户端的名称。
-
provider-id 对相关提供者的引用。可以引用一个
<provider>元素或使用其中一个通用提供者(google、github、facebook、okta)。
<provider>
OAuth 2.0 或 OpenID Connect 1.0 提供者的配置信息。
<provider> 属性
-
provider-id The ID that uniquely identifies the provider.
-
token-uri 授权服务器的 Token 端点 URI。
-
用户信息端点URI 用于访问已认证终端用户的声明/属性的UserInfo端点URI。
-
user-info-authentication-method
发送访问Tokens到UserInfo Endpoint时使用的身份验证方法。支持的值是 header, form 和 query。
-
user-info-user-name-attribute 该属性名称在UserInfo响应中引用最终用户的姓名或标识。
-
jwk-set-uri 用于从授权服务器检索JSON Web Key (JWK)集的URI,其中包含用于验证IDTokens的JSON Web Signature (JWS)以及可选的用户信息响应的加密密钥。
-
issuer-uri
用于初始配置
ClientRegistration的URI,通过发现OpenID Connect提供者的Configuration endpoint或授权服务器的Metadata endpoint。
<oauth2-resource-server>
添加一个BearerTokenAuthenticationFilter,BearerTokenAuthenticationEntryPoint和BearerTokenAccessDeniedHandler到配置中。
此外,必须指定<jwt>或<opaque-token>。
<oauth2-resource-server> 属性
-
authentication-manager-resolver-ref
参考一个AuthenticationManagerResolver,它将在请求时间解析AuthenticationManager
-
bearer-token-resolver-ref
引用一个BearerTokenResolver,用于从请求中检索bearerTokens。这不能与authentication-converter-ref同时使用。
-
entry-point-ref 参考一个
AuthenticationEntryPoint,它将处理未授权的请求
-
authentication-converter-ref
引用一个AuthenticationConverter,用于将请求转换为认证。此配置不能与bearer-token-resolver-ref同时使用。
<opaque-token>
代表一个OAuth 2.0资源服务器,该服务器将授权密Tokens
<opaque-token> 属性
-
introspector-ref
参考一个OpaqueTokenIntrospector。这是一个较大的组件,会覆盖introspection-uri、client-id和client-secret。
-
introspection-uri 用于反向查询不透明Tokens详细信息的 Introspection Uri。应与
client-id和client-secret配合使用。
-
客户端ID
The Client Id to use for client authentication against the providedintrospection-uri.
-
客户端密钥 用于根据提供的
introspection-uri进行客户端身份验证的客户端密钥。
-
authentication-converter-ref
参考一个OpaqueTokenAuthenticationConverter。负责将成功的introspection结果转换为一个Authentication实例。
<relying-party-registrations>
依靠方(一个或多个)已注册(ClientRegistration)并使用 SAML 2.0 身份提供者的容器元素。
<relying-party-registration>
代表已注册于SAML 2.0 身份提供者的一方依赖方
<relying-party-registration> 属性
-
注册标识符 The ID that uniquely identifies the
RelyingPartyRegistration.
-
metadata-location 声明方的元数据位置。
-
client-id 该依赖方的实体标识符(EntityID)。
-
assertion-consumer-service-location AssertionConsumerService Location。等同于在依赖方的
<AssertionConsumerService Location="…"/>中找到的<SPSSODescriptor>的值。
-
assertion-consumer-service-binding AssertionConsumerService 绑定。等同于在依赖方的
<AssertionConsumerService Binding="…"/>中找到的<SPSSODescriptor>的值。 支持的值为 POST 和 REDIRECT.
-
single-logout-service-location 单.logout服务位置。等同于在依赖方的<SPSSODescriptor>中找到的<SingleLogoutService Location=
-
single-logout-service-response-location 单点注销服务响应位置。等同于在依赖方的<SPSSODescriptor>中找到的<SingleLogoutService ResponseLocation=
-
single-logout-service-binding SingleLogoutService 绑定。等同于在依赖方的 <SPSSODescriptor> 中找到的 <SingleLogoutService Binding=
-
asserting-party-id
一个关联授权方的引用。必须引用一个<asserting-party>元素。
<asserting-party>
SAML 2.0 断言方的配置信息。
<asserting-party> 属性
-
asserting-party-id
唯一标识主张方的ID。
-
实体标识符 The EntityID of the Asserting Party
-
want-authn-requests-signed 该
WantAuthnRequestsSigned设置表示声明方希望认证方在发送前对AuthnRequest进行签名。
-
单点登录服务位置
单点登录服务 (SingleSignOnService) 的位置。
-
单点登录服务绑定
The SingleSignOnService 绑定。
支持的值为 POST 和 REDIRECT。
-
签名算法
此声明方的org.opensaml.saml.ext.saml2alg.SigningMethod算法列表,按优先级顺序排列。
-
single-logout-service-location 单点注销服务位置。等同于断言方的<IDPSSODescriptor>中<SingleLogoutService Location=
-
single-logout-service-response-location SingleLogoutService 响应位置。相当于在认证方的
中找到的 <SingleLogoutService ResponseLocation=
-
single-logout-service-binding
SingleLogoutService 绑定。相当于在认证方的
<http-basic>
<intercept-url>
此元素用于定义应用程序感兴趣的 URL 模式集合,并配置它们应如何处理。
它用于构建由 FilterInvocationSecurityMetadataSource 使用的 FilterSecurityInterceptor。
它还负责在某些 URL 需要通过 HTTPS 访问时配置一个 ChannelProcessingFilter,例如。
当将指定模式与传入请求进行匹配时,匹配顺序是按照该元素声明的顺序进行的。
因此,最具体的模式应首先出现,而最通用的模式应最后出现。
<intercept-url> 属性
-
访问权限
列出将存储在FilterInvocationSecurityMetadataSource中的访问属性,针对定义的URL模式/方法组合。
这应该是一个以逗号分隔的安全配置属性列表(例如角色名称)。
-
method 该 HTTP 方法将与模式和 servlet 路径(可选)一起用于匹配传入请求。 如果未省略,任何方法都将匹配。 如果指定了具有相同模式但没有方法的配置,则具体到方法的匹配将优先。
-
模式 定义URL路径的模式。内容将取决于包含的
request-matcher属性,因此如果没有在类路径中找到 Spring MVC,则会默认使用 MVC 匹配器。
-
request-matcher-ref 一个引用,用于确定此
<intercept-url>是否被使用。 其中RequestMatcher和<intercept-url>需要根据具体上下文进行替换。
-
requires-channel
可以是 "http" 或 "https",具体取决于某个 URL 模式应通过 HTTP 还是 HTTPS 访问。
或者当没有偏好时可以使用值 "any"。
如果在任何<intercept-url>元素上存在此属性,则会在过滤器堆栈中添加一个ChannelProcessingFilter,并将其附加依赖项添加到应用程序上下文中。
如果添加了<port-mappings>配置,这将被SecureChannelProcessor和InsecureChannelProcessor bean用于确定重定向到HTTP/HTTPS所使用的端口。
-
servlet-path 该servlet路径将与模式和HTTP方法一起用于匹配传入请求。 此属性仅在request-matcher为'mvc'时适用。 此外,当且仅当存在以下两种情况之一时才需要设置值:1)在
#nsa-http-request-matcher中注册了两个或多个具有以HttpServlet开头的映射关系的不同ServletContext;2)模式以已注册的'/'路径中的相同值开始(不包括默认根路径HttpServlet)。
<logout>
向过滤器堆栈添加一个LogoutFilter。这使用了一个SecurityContextLogoutHandler进行配置。
<logout> 属性
-
invalidate-session 映射到
invalidateHttpSession的SecurityContextLogoutHandler。 默认值为"true",因此在注销时将失效会话。
-
logout-success-url 用户登出后将被重定向到的目的URL。 默认值为 <form-login-login-page>/?logout(即 /login?logout)
设置此属性将注入
SessionManagementFilter,并配置一个SimpleRedirectInvalidSessionStrategy,其行为由该属性值决定。 当提交无效的会话ID时,该策略会被调用,并重定向到配置的URL。
-
注销URL 该URL将导致用户退出登录(即,该URL将被过滤器处理)。 默认值为“/logout”。
-
success-handler-ref
可以用于提供一个LogoutSuccessHandler的实例,该实例将在注销后被调用来控制导航。
<saml2-login>
The SAML 2.0 登录 功能配置了使用 SAML 2.0 服务提供商的支持身份验证。
<saml2-login> 属性
-
relying-party-registration-repository-ref
参考RelyingPartyRegistrationRepository。
-
authentication-request-repository-ref
对应的Saml2AuthenticationRequestRepository的引用。
-
authentication-request-context-resolver-ref
参考Saml2AuthenticationRequestResolver。
-
authentication-converter-ref 参考
AuthenticationConverter的引用。
-
登录处理URL
The URI where the filter processes authentication requests.
-
登录页面
向用户发送以进行登录的URI。
-
authentication-success-handler-ref
AuthenticationSuccessHandler的引用。
-
authentication-failure-handler-ref 参考
AuthenticationFailureHandler。
-
authentication-manager-ref 参考到的
AuthenticationManager。
<saml2-logout>
The SAML 2.0 单点注销 功能配置支持 RP-和 AP 初始化的 SAML 2.0 单点注销。
<saml2-logout> 属性
-
注销URL 凭籍方或断言方可以通过此URL触发注销。
-
logout-request-url 断言方可以发送 SAML 2.0 注销请求的 URL。
-
logout-response-url 该URL用于断言方发送SAML 2.0注销响应。
-
relying-party-registration-repository-ref
参考RelyingPartyRegistrationRepository。
-
logout-request-validator-ref Reference to the
Saml2LogoutRequestValidator。
-
logout-request-resolver-ref 参考
Saml2LogoutRequestResolver。
-
logout-request-repository-ref
Saml2LogoutRequestRepository的引用。
-
logout-response-validator-ref 参考至
Saml2LogoutResponseValidator。
-
logout-response-resolver-ref 参考
Saml2LogoutResponseResolver。
<port-mappings>
默认情况下,将会为重定向到安全和非安全URL而配置一个PortMapperImpl实例。
此元素可选地用于覆盖该类定义的默认映射。
每个<port-mapping>子元素定义了一对HTTP:HTTPS端口。
默认映射是80:443和8080:8443。
有关如何覆盖这些默认映射的一个示例可以在重定向到HTTPS中找到。
<remember-me>
将RememberMeAuthenticationFilter添加到过滤器栈中。
这将会根据属性设置,配置为TokenBasedRememberMeServices、PersistentTokenBasedRememberMeServices或一个用户指定的实现RememberMeServices的bean。
<remember-me> 属性
-
authentication-success-handler-ref 设置
authenticationSuccessHandler的RememberMeAuthenticationFilter属性,如果需要自定义导航。 该值应该是应用程序上下文中一个AuthenticationSuccessHandlerbean 的名称。
-
data-source-ref 一个对
DataSourcebean 的引用。如果设置了此属性,PersistentTokenBasedRememberMeServices将被使用,并配置为使用一个JdbcTokenRepositoryImpl实例。
-
remember-me-parameter
The name of the request parameter which toggles remember-me authentication.
Defaults to
-
key 映射到
AbstractRememberMeServices的“key”属性。 应设置为唯一值,以确保记住我的 Cookie 仅在单一应用程序内有效[3]。 如果未设置此值,将生成一个安全的随机值。 由于生成安全随机值可能需要一些时间,显式设置此值有助于在使用记住我的功能时提高启动速度。
-
services-alias 导出了内部定义的
RememberMeServices作为别名bean,允许其他应用上下文中的bean使用它。
-
services-ref
允许对将由过滤器使用的RememberMeServices实现进行完全控制。
The value should be theidof a bean in the application context which implements this interface.
如果使用了注销过滤器,还应该实现LogoutHandler接口。
-
token-repository-ref
配置一个PersistentTokenBasedRememberMeServices,但允许使用自定义的PersistentTokenRepositorybean。
-
token-validity-seconds
映射到tokenValiditySeconds的AbstractRememberMeServices属性。
指定记住我cookie的有效期(以秒为单位)。
默认情况下,它的有效期为14天。
-
user-service-ref 记住我服务的实现需要访问一个
UserDetailsService,因此必须在应用程序上下文中定义一个。 如果只有一个,它将被命名空间配置自动选择和使用。 如果有多个实例,您可以使用此属性显式指定一个beanid。
<request-cache> 元素
<session-management>
会话管理相关的功能通过在过滤器栈中添加一个SessionManagementFilter实现。
<session-management> 属性
-
authentication-strategy-explicit-invocation 将此属性设置为 true 将意味着
SessionManagementFilter不会被注入,需要显式调用 SessionAuthenticationStrategy。
-
invalid-session-url 设置此属性将注入
SessionManagementFilter一个配置了属性值的SimpleRedirectInvalidSessionStrategy。 当提交无效会话ID时,策略将会被调用,重定向到配置的URL。
-
无效会话URL 允许注入由SessionManagementFilter使用的InvalidSessionStrategy实例。 请使用此选项或
invalid-session-url属性之一,但不能同时使用两者。
-
session-authentication-error-url 定义了当会话认证策略抛出异常时应显示的错误页面URL。 如果没有设置该属性,将会向客户端返回未授权(401)错误代码。 注意,如果错误发生在基于表单的登录过程中,则此属性不会生效,并且将优先使用验证失败时的URL。
-
session-authentication-strategy-ref 允许注入由SessionManagementFilter使用的SessionAuthenticationStrategy实例
-
session-fixation-protection
表示在用户认证时将如何应用会话固定保护。 如果设置为"none",则不会应用任何保护措施。
"newSession" 将创建一个新的空会话,并仅迁移与 Spring Security 相关的属性。
"migrateSession" 将创建一个新的会话并复制所有会话属性到新会话。
在 Servlet 3.1 (Java EE 7) 及更新版本的容器中,指定 "changeSessionId" 将保留现有会话,并使用容器提供的会话固定保护(HttpServletRequest#changeSessionId())。 默认情况下,在 Servlet 3.1 及更新版本的容器中设置为 "changeSessionId",在较旧的容器中设置为 "migrateSession"。
如果在较旧的容器中使用 "changeSessionId" 将抛出异常。如果启用了会话固定保护,
SessionManagementFilter将注入一个适当配置的DefaultSessionAuthenticationStrategy。 请参阅此类的 Javadoc 获取更多详细信息。
<concurrency-control>
添加对并发会话控制的支持,允许为用户可以拥有的活动会话数量设置限制。
一个 ConcurrentSessionFilter 将被创建,并且使用 ConcurrentSessionControlAuthenticationStrategy 和 SessionManagementFilter。
如果声明了 form-login 元素,策略对象也将注入到创建的认证过滤器中。
将为策略创建一个 SessionRegistry 实例(除非用户希望使用自定义 bean,默认为 SessionRegistryImpl 实例)。
<concurrency-control> 属性
-
error-if-maximum-exceeded 如果设置为
-
已过期的 URL
如果用户尝试使用并发会话控制器因超出允许会话数而在其他地方重新登录后而被“过期”的会话重定向到的 URL。
除非设置了
exception-if-maximum-exceeded,否则应设置此值。
如果没有提供任何值,则直接将过期消息写回响应中。
-
expired-url
允许注入由会话过滤器(ConcurrentSessionFilter)使用的已过期会话策略实例(ExpiredSessionStrategy)。
-
max-sessions
映射到maximumSessions的ConcurrentSessionControlAuthenticationStrategy属性。
将值指定为-1以支持无限会话。
-
max-sessions-ref
允许注入由并发会话控制认证策略(ConcurrentSessionControlAuthenticationStrategy)使用的 SessionLimit 实例。
-
session-registry-alias
它也可以在自己的bean或管理界面中使用时对内部会话注册表进行引用很有用。
您可以使用session-registry-alias属性暴露内部bean,并为其指定一个名称,以便您可以在配置的其他地方使用此名称。
-
session-registry-ref 用户可以使用
SessionRegistry属性提供自己的session-registry-ref实现。其他并发会话控制bean将会被配置为使用它。
<x509>
<filter-chain-map>
<filter-chain>
用于定义特定的URL模式以及适用该模式URL的过滤器列表。 在配置FilterChainProxy时,当多个filter-chain元素被按顺序排列成一个列表时,最具体的模式应放在列表顶部,而最通用的模式则放在底部。
<filter-chain> 属性
-
过滤器 一个逗号分隔的 Spring bean 引用列表,这些 bean 实现了
Filter。 值为 \"none\" 表示此FilterChain不应使用任何Filter。
-
模式 创建 RequestMatcher 的模式,结合使用request-matcher
-
request-matcher-ref
一个用于确定是否应该调用RequestMatcher属性中的任何Filter的filters引用。
<filter-security-metadata-source>
用于显式配置 FilterSecurityMetadataSource bean,以便与 FilterSecurityInterceptor 配合使用。 通常只有在您显式配置 FilterChainProxy 而不是使用 <http> 元素时才需要这样做。 使用的 intercept-url 元素应仅包含 pattern、method 和 access 属性。 任何其他属性都可能导致配置错误。
<filter-security-metadata-source> 属性
-
id
一个bean标识符,用于在上下文中其他地方引用该bean。
-
request-matcher 定义了用于匹配传入请求的策略。 目前可选的方式有 'ant'(适用于 ant 路径模式)、'regex' 用于正则表达式和 'ciRegex' 用于大小写不敏感的正则表达式。
-
use-expressions
启用在<intercept-url>元素的'access'属性中使用表达式,而不是传统的配置属性。
默认值为'true'。
如果启用,每个属性应该包含一个单一的布尔表达式。
如果该表达式评估为'true',则将授予访问权限。
DefaultLoginPageGeneratingFilter 负责渲染登录页面,并将为需要时提供常规表单登录和/或 OIDC 的登录表单。PersistentTokenBasedRememberMeServices的使用,其中Tokens存储在服务器端。