此版本仍在开发中,尚未被视为稳定版本。对于最新的稳定版本,请使用 Spring Security 6.4.1spring-doc.cadn.net.cn

Web 应用程序安全

<debug>

启用 Spring Security 调试基础结构。 这将提供人类可读的 (多行) 调试信息,以监控进入安全过滤器的请求。 这可能包括敏感信息,例如请求参数或标头,并且只能在开发环境中使用。spring-doc.cadn.net.cn

<http>

如果您使用<http>元素中,一个FilterChainProxy创建名为“springSecurityFilterChain”的 Bean,并使用元素中的配置在FilterChainProxy. 从 Spring Security 3.1 开始,额外的http元素可用于添加额外的过滤器链[1]有关如何从web.xml]. 一些核心过滤器始终在过滤器链中创建,而其他过滤器将根据存在的属性和子元素添加到堆栈中。 标准过滤器的位置是固定的(参见命名空间介绍中的过滤器顺序表),当用户必须在FilterChainProxy豆。 当然,如果您需要完全控制配置,您仍然可以执行此作。spring-doc.cadn.net.cn

所有需要引用AuthenticationManager将自动注入 namespace 配置创建的内部实例。spring-doc.cadn.net.cn

<http>namespace 块总是创建一个SecurityContextPersistenceFilterExceptionTranslationFilter以及FilterSecurityInterceptor. 这些是固定的,不能用替代品代替。spring-doc.cadn.net.cn

<http> 属性

<http>元素控制核心过滤器上的一些属性。spring-doc.cadn.net.cn

  • 使用授权管理器使用 AuthorizationManager API 而不是 SecurityMetadataSource(默认为 true)spring-doc.cadn.net.cn

  • 访问决策管理器引用使用此 AuthorizationManager,而不是从 <intercept-url> 元素派生一个spring-doc.cadn.net.cn

  • 访问决策管理器引用Optional 属性,用于指定AccessDecisionManager实现,该实现应用于授权 HTTP 请求。 默认情况下,一个AffirmativeBasedimplementation 用于RoleVoter以及一个AuthenticatedVoter.spring-doc.cadn.net.cn

  • 身份验证管理器引用AuthenticationManager用于FilterChain由此 HTTP 元素创建。spring-doc.cadn.net.cn

  • 自动配置自动注册登录表单、BASIC 认证、注销服务。 如果设置为 “true”,则添加所有这些功能(尽管您仍然可以通过提供相应的元素来自定义每个功能的配置)。 如果未指定,则默认为 “false”。 不建议使用此属性。 请改用显式配置元素以避免混淆。spring-doc.cadn.net.cn

  • 创建会话控制 Spring Security 类创建 HTTP 会话的急切程度。 选项包括:spring-doc.cadn.net.cn

    • always- 如果不存在会话,Spring Security 将主动创建一个会话。spring-doc.cadn.net.cn

    • ifRequired- Spring Security 将仅在需要会话时才创建会话(默认值)。spring-doc.cadn.net.cn

    • never- Spring Security 永远不会创建会话,但如果应用程序创建会话,则会使用会话。spring-doc.cadn.net.cn

    • stateless- Spring Security 不会创建会话并忽略该会话以获取 SpringAuthentication.spring-doc.cadn.net.cn

  • disable-url-rewriting (禁用 url 重写)防止将会话 ID 附加到应用程序中的 URL。 如果此属性设置为true. 默认值为true.spring-doc.cadn.net.cn

  • 入口点引用通常AuthenticationEntryPointused 将根据已配置的身份验证机制进行设置。 此属性允许通过定义自定义的AuthenticationEntryPointbean,它将启动身份验证过程。spring-doc.cadn.net.cn

  • jaas-api 配置如果可用,则以Subject收购自JaasAuthenticationToken这是通过添加JaasApiIntegrationFilterbean 添加到堆栈中。 默认为false.spring-doc.cadn.net.cn

  • 每次请求一次对应于observeOncePerRequest的属性FilterSecurityInterceptor. 默认为false.spring-doc.cadn.net.cn

  • filter-all-dispatcher-types对应于shouldFilterAllDispatcherTypes属性的AuthorizationFilter.在以下情况下不起作用use-authorization-manager=false. 默认为true.spring-doc.cadn.net.cn

  • 模式http 元素定义模式可控制请求,这些请求将通过它定义的过滤器列表进行过滤。 解释取决于配置的 request-matcher。 如果未定义模式,则将匹配所有请求,因此应首先声明最具体的模式。spring-doc.cadn.net.cn

  • 领域设置用于基本身份验证的领域名称(如果启用)。 对应于realmName属性BasicAuthenticationEntryPoint.spring-doc.cadn.net.cn

  • 请求匹配器定义RequestMatcher策略FilterChainProxy以及由intercept-url匹配传入请求。 选项当前为mvc,ant,regexciRegex,对于 Spring MVC,分别为 ant、regular-expression 和 event-insensitive regular-expression。 使用其 patternmethodservlet-path 属性为每个 intercept-url 元素创建一个单独的实例。 Ant 路径使用AntPathRequestMatcher,则使用RegexRequestMatcher对于 Spring MVC 路径,匹配MvcRequestMatcher被使用。 有关如何执行匹配的更多详细信息,请参阅这些类的 Javadoc。 如果 Classpath 中存在 Spring MVC,则 MVC 是默认策略,如果没有,则使用 Ant 路径。spring-doc.cadn.net.cn

  • 请求匹配器引用对实现RequestMatcher这将确定此FilterChain应该使用。 这是 pattern 的更强大的替代方案。spring-doc.cadn.net.cn

  • 安全请求模式可以映射到空的过滤器链,方法是将此属性设置为none. 不会应用任何安全性,并且 Spring Security 的任何功能都不可用。spring-doc.cadn.net.cn

  • security-context-repository-ref 的允许注入自定义SecurityContextHolderStrategySecurityContextPersistenceFilter,SecurityContextHolderFilter,BasicAuthenticationFilter,UsernamePasswordAuthenticationFilter,ExceptionTranslationFilter,LogoutFilter等。spring-doc.cadn.net.cn

  • 安全上下文显式保存如果为 true,则使用SecurityContextHolderFilter而不是SecurityContextPersistenceFilter. 需要显式保存spring-doc.cadn.net.cn

  • security-context-repository-ref 的允许注入自定义SecurityContextRepositorySecurityContextPersistenceFilter.spring-doc.cadn.net.cn

  • servlet api-provision提供HttpServletRequest安全方法,例如isUserInRole()getPrincipal()这些 API 是通过添加SecurityContextHolderAwareRequestFilterbean 添加到堆栈中。 默认为true.spring-doc.cadn.net.cn

<access-denied-handler>

此元素允许您设置errorPage属性为默认值AccessDeniedHandlerExceptionTranslationFilter、使用 error-page 属性,或者使用 ref 属性提供您自己的实现。 这在 ExceptionTranslationFilter 一节中有更详细的讨论。spring-doc.cadn.net.cn

<access-denied-handler 的父元素>

<access-denied-handler> 属性

  • 错误页如果经过身份验证的用户请求他们无权访问的页面,则将被重定向到被拒绝的页面。spring-doc.cadn.net.cn

<cors>

此元素允许配置CorsFilter. 如果没有CorsFilterCorsConfigurationSource,并且 Spring MVC 位于类路径上,则HandlerMappingIntrospector用作CorsConfigurationSource.spring-doc.cadn.net.cn

<cors> 属性

<cors>元素控制 headers 元素。spring-doc.cadn.net.cn

  • cors-configuration-source-ref指定 Bean 名称的 Optional 属性CorsConfigurationSource注入到CorsFilter由 XML 命名空间创建。spring-doc.cadn.net.cn

< 的父元素>

<headers>

此元素允许配置要与响应一起发送的其他 (安全) 标头。 它可以轻松配置多个标头,还允许通过 header 元素设置自定义标头。 其他信息,可以在参考的 Security Headers 部分找到。spring-doc.cadn.net.cn

<headers> 属性

<headers>元素控制 headers 元素。spring-doc.cadn.net.cn

  • 默认值-已禁用可选属性,指定禁用默认的 Spring Security 的 HTTP 响应 Headers。 默认值为 false (包括默认 headers)。spring-doc.cadn.net.cn

  • 禁用指定禁用 Spring Security 的 HTTP 响应标头的可选属性。 默认值为 false (启用标头)。spring-doc.cadn.net.cn

<headers 的父元素>

<cache-control>

增加Cache-Control,PragmaExpires标头,以确保浏览器不会缓存受保护的页面。spring-doc.cadn.net.cn

<cache-control> 属性

<cache-control 的父元素>

<hsts>

启用后,将 Strict-Transport-Security 标头添加到任何安全请求的响应中。 这允许服务器指示浏览器自动使用 HTTPS 来处理将来的请求。spring-doc.cadn.net.cn

<hsts> 属性

  • include-sub-domains (包含子域)指定是否应包含子域。 默认为 true。spring-doc.cadn.net.cn

  • 最大年龄秒指定应将主机视为已知 HSTS 主机的最长时间。 默认 1 年。spring-doc.cadn.net.cn

  • 请求匹配器引用用于确定是否应设置 Headers 的 RequestMatcher 实例。 默认值为 HttpServletRequest.isSecure() 为 true。spring-doc.cadn.net.cn

<hsts 的父元素>

<hpkp>

启用后,将 Public Key Pinning Extension for HTTP 标头添加到任何安全请求的响应中。 这允许 HTTPS 网站抵御攻击者使用错误颁发或其他欺诈性证书的假冒。spring-doc.cadn.net.cn

<hpkp> 属性

  • include-sub-domains (包含子域)指定是否应包含子域。 默认为 false。spring-doc.cadn.net.cn

  • 最大年龄秒设置 Public-Key-Pins 标头的 max-age 指令的值。 默认 60 天。spring-doc.cadn.net.cn

<hpkp 的父元素>

<引脚>

<pins 的子元素>

<pin>

使用 base64 编码的 SPKI 指纹作为值,使用加密哈希算法作为属性来指定 pinspring-doc.cadn.net.cn

<pin> 属性

<pin 的父元素>

<内容安全策略>

启用后,将内容安全策略 (CSP) 标头添加到响应中。 CSP 是 Web 应用程序可以用来缓解内容注入漏洞的一种机制,例如跨站点脚本 (XSS)。spring-doc.cadn.net.cn

<content-security-policy> 属性

  • 策略指令Content-Security-Policy 标头的安全策略指令,或者如果 report-only 设置为 true,则使用 Content-Security-Policy-Report-Only 标头。spring-doc.cadn.net.cn

  • 仅限报告设置为 true,以启用 Content-Security-Policy-Report-Only 标头,仅用于报告策略冲突。 默认为 false。spring-doc.cadn.net.cn

<content-security-policy 的父元素>

<referrer-policy>

启用后,将 Referrer Policy 标头添加到响应中。spring-doc.cadn.net.cn

<referrer-policy> 属性

<referrer-policy 的父元素>

<功能策略>

启用后,将 Feature Policy 标头添加到响应中。spring-doc.cadn.net.cn

<feature-policy> 属性

<feature-policy 的父元素>

<frame-options>

启用后,会将 X-Frame-Options 标头添加到响应中,这将允许较新的浏览器进行一些安全检查并防止点击劫持攻击。spring-doc.cadn.net.cn

<frame-options> 属性

  • 政策spring-doc.cadn.net.cn

    • DENY页面无法显示在框架中,无论哪个站点尝试这样做。 这是指定 frame-options-policy 时的默认值。spring-doc.cadn.net.cn

    • SAMEORIGIN页面只能显示在与页面本身同源的框架中spring-doc.cadn.net.cn

    换句话说,如果指定 DENY,则不仅在从其他站点加载时尝试在框架中加载页面会失败,而且从同一站点加载时,尝试加载页面也会失败。 另一方面,如果指定 SAMEORIGIN,则只要在框架中包含该页面的站点与提供该页面的站点相同,您仍可以在框架中使用该页面。spring-doc.cadn.net.cn

<frame-options> 的父元素

<permissions-policy>

<permissions-policy> 属性

<permissions-policy 的父元素>

<xss-protection>

X-XSS-Protection 标头添加到响应中,以帮助防止反射/类型 1 跨站点脚本 (XSS) 攻击。 这绝不是对 XSS 攻击的全面保护!spring-doc.cadn.net.cn

<xss-protection> 属性

<xss-protection 的父元素>

<内容类型选项>

将值为 nosniff 的 X-Content-Type-Options 标头添加到响应中。 这将禁用 IE8+ 和 Chrome 扩展的 MIME 探查spring-doc.cadn.net.cn

<content-type-options> 属性

<content-type-options> 的父元素

<跨源嵌入器策略>

启用后,将 Cross-Origin-Embedder-Policy 标头添加到响应中。spring-doc.cadn.net.cn

<cross-origin-embedder-policy> 属性
<cross-origin-embedder-policy 的父元素>

<跨域打开器策略>

启用后,将 Cross-Origin-Opener-Policy 标头添加到响应中。spring-doc.cadn.net.cn

<cross-origin-opener-policy> 属性
<cross-origin-opener-policy 的父元素>

<跨源资源策略>

启用后,将 Cross-Origin-Resource-Policy 标头添加到响应中。spring-doc.cadn.net.cn

<cross-origin-resource-policy> 属性
<cross-origin-resource-policy 的父元素>

<header>

向响应中添加额外的 Headers,name 和 value 都需要指定。spring-doc.cadn.net.cn

<header-attributes> 属性

<header 的父元素>

<匿名>

添加一个AnonymousAuthenticationFilter添加到堆栈中,并将AnonymousAuthenticationProvider. 如果您使用的是IS_AUTHENTICATED_ANONYMOUSLY属性。spring-doc.cadn.net.cn

<anonymous> 的父元素

<anonymous> 属性

  • 启用使用默认命名空间设置时,将自动启用匿名 “authentication” 工具。 您可以使用此属性禁用它。spring-doc.cadn.net.cn

  • 授予权限应分配给匿名请求的已授予权限。 通常用于为匿名请求分配特定角色,这些角色随后可用于授权决策。 如果未设置,则默认为ROLE_ANONYMOUS.spring-doc.cadn.net.cn

  • 钥匙提供程序和筛选器之间共享的密钥。 这通常不需要设置。 如果未设置,它将默认为安全的随机生成值。 这意味着设置此值可以缩短使用匿名功能时的启动时间,因为生成安全随机值可能需要一段时间。spring-doc.cadn.net.cn

  • 用户名应分配给匿名请求的用户名。 这允许识别主体,这对于日志记录和审计可能很重要。 如果未设置,则默认为anonymousUser.spring-doc.cadn.net.cn

<csrf>

此元素将向应用程序添加跨站点请求伪造程序 (CSRF) 保护。 它还更新了默认的 RequestCache,以仅在身份验证成功后重放 “GET” 请求。 其他信息可以在参考的跨站点请求伪造 (CSRF) 部分找到。spring-doc.cadn.net.cn

<csrf 的父元素>

<csrf> 属性

  • 禁用指定禁用 Spring Security 的 CSRF 保护的可选属性。 默认值为 false (启用 CSRF 保护)。 强烈建议启用 CSRF 保护。spring-doc.cadn.net.cn

  • 令牌存储库引用要使用的 CsrfTokenRepository。 默认值为HttpSessionCsrfTokenRepository.spring-doc.cadn.net.cn

  • 请求处理程序引用可选的CsrfTokenRequestHandler使用。默认值为CsrfTokenRequestAttributeHandler.spring-doc.cadn.net.cn

  • 请求匹配器引用RequestMatcher 实例,用于确定是否应应用 CSRF。 默认为除 “GET”、“TRACE”、“HEAD”、“OPTIONS” 之外的任何 HTTP 方法。spring-doc.cadn.net.cn

<自定义过滤器>

此元素用于将过滤器添加到过滤器链中。 它不会创建任何其他 bean,但用于选择 type 为jakarta.servlet.Filter它已经在应用程序上下文中定义,并将其添加到 Spring Security 维护的过滤器链中的特定位置。 完整的详细信息可以在 命名空间 章节中找到。spring-doc.cadn.net.cn

<custom-filter 的父元素>

<custom-filter> 属性

  • 紧接在之后的 filter,custom-filter 应放置在链中。 只有希望将自己的过滤器混合到安全过滤器链中并对标准 Spring Security 过滤器有一定了解的高级用户才需要此功能。 过滤器名称映射到特定的 Spring Security 实现过滤器。spring-doc.cadn.net.cn

  • 位置自定义过滤器应在链中放置的显式位置。 如果要更换标准过滤器,请使用。spring-doc.cadn.net.cn

<表达式处理程序>

定义SecurityExpressionHandler实例,如果启用了基于表达式的访问控制,则将使用该实例。 如果未提供,将使用默认实现(不支持 ACL)。spring-doc.cadn.net.cn

<expression-handler> 属性

<表单登录>

用于添加UsernamePasswordAuthenticationFilter添加到过滤器堆栈中,并将LoginUrlAuthenticationEntryPoint添加到应用程序上下文中以按需提供身份验证。 这将始终优先于其他命名空间创建的入口点。 如果未提供任何属性,则会在 URL “/login” 处自动生成一个登录页面[2]可以使用<form-login>属性.spring-doc.cadn.net.cn

<form-login> 的父元素

<form-login> 属性

  • 始终使用默认目标如果设置为true,则用户将始终从 default-target-url 给定的值开始,无论他们如何到达登录页面。 映射到alwaysUseDefaultTargetUrl的属性UsernamePasswordAuthenticationFilter. 默认值为false.spring-doc.cadn.net.cn

  • 身份验证详细信息源引用AuthenticationDetailsSource将由 Authentication 过滤器使用spring-doc.cadn.net.cn

  • authentication-failure-handler-ref (身份验证失败处理程序引用)可用作 authentication-failure-url 的替代方法,让您在身份验证失败后完全控制导航流。 该值应为AuthenticationFailureHandlerbean 中。spring-doc.cadn.net.cn

  • 身份验证失败 URL映射到authenticationFailureUrl的属性UsernamePasswordAuthenticationFilter. 定义浏览器在登录失败时将重定向到的 URL。 默认为/login?error,这将由自动登录页面生成器自动处理,并重新呈现带有错误消息的登录页面。spring-doc.cadn.net.cn

  • 默认目标 URL映射到defaultTargetUrl的属性UsernamePasswordAuthenticationFilter. 如果未设置,则默认值为 “/” (应用程序根目录)。 如果用户在尝试访问受保护资源时未被要求登录,则登录后将被带到此 URL,此时他们将被带到最初请求的 URL。spring-doc.cadn.net.cn

  • 登录页面应用于呈现登录页面的 URL。 映射到loginFormUrl属性的LoginUrlAuthenticationEntryPoint. 默认为 “/login”。spring-doc.cadn.net.cn

  • 登录处理 URL映射到filterProcessesUrl的属性UsernamePasswordAuthenticationFilter. 默认值为 “/login”。spring-doc.cadn.net.cn

  • username-parameter (用户名参数)包含 username 的请求参数的名称。 默认为 “username”。spring-doc.cadn.net.cn

  • authentication-success-forward-url (身份验证成功转发 URL)映射 aForwardAuthenticationSuccessHandlerauthenticationSuccessHandler的属性UsernamePasswordAuthenticationFilter.spring-doc.cadn.net.cn

  • 身份验证失败转发 URL映射 aForwardAuthenticationFailureHandlerauthenticationFailureHandler的属性UsernamePasswordAuthenticationFilter.spring-doc.cadn.net.cn

<oauth2-login>

OAuth 2.0 登录功能使用 OAuth 2.0 和/或 OpenID Connect 1.0 提供程序配置身份验证支持。spring-doc.cadn.net.cn

<oauth2-login 的父元素>

<oauth2-login> 属性

  • authentication-success-handler-ref (身份验证成功处理程序引用)对AuthenticationSuccessHandler.spring-doc.cadn.net.cn

  • authentication-failure-handler-ref (身份验证失败处理程序引用)对AuthenticationFailureHandler.spring-doc.cadn.net.cn

  • jwt-decoder-factory-refJwtDecoderFactory使用者OidcAuthorizationCodeAuthenticationProvider.spring-doc.cadn.net.cn

<oauth2-client>

<oauth2-client 的父元素>

<oauth2-client> 属性

<oauth2-client 的子元素>

<授权代码授予>

<authorization-code-grant> 的父元素

<authorization-code-grant> 属性

<client-registrations>

向 OAuth 2.0 或 OpenID Connect 1.0 提供程序注册 (ClientRegistration) 的客户端的容器元素。spring-doc.cadn.net.cn

<客户端注册>

表示向 OAuth 2.0 或 OpenID Connect 1.0 提供程序注册的客户端。spring-doc.cadn.net.cn

<client-registration> 的父元素

<client-registration> 属性

  • 授权授予类型OAuth 2.0 授权框架定义了四种授权授权类型。 支持的值为authorization_code,client_credentials,password以及扩展授权类型urn:ietf:params:oauth:grant-type:jwt-bearer.spring-doc.cadn.net.cn

  • 重定向 URI客户端已注册的重定向 URI,在最终用户对客户端进行身份验证和授权访问后,授权服务器会将最终用户的用户代理重定向到该 URI。spring-doc.cadn.net.cn

  • 范围客户端在授权请求流程中请求的范围,例如 openid、email 或 profile。spring-doc.cadn.net.cn

  • 客户端名称用于客户端的描述性名称。 该名称可能在某些情况下使用,例如在自动生成的登录页面中显示客户端的名称时。spring-doc.cadn.net.cn

  • 提供商 ID对关联提供程序的引用。可以引用<provider>元素或使用常见提供程序之一(Google、GitHub、Facebook、Okta)。spring-doc.cadn.net.cn

<提供商>

OAuth 2.0 或 OpenID Connect 1.0 提供者的配置信息。spring-doc.cadn.net.cn

<provider> 属性

  • 用户信息-URI用于访问经过身份验证的最终用户的声明/属性的 UserInfo Endpoint URI。spring-doc.cadn.net.cn

  • 用户信息身份验证方法将访问令牌发送到 UserInfo Endpoint 时使用的身份验证方法。 支持的值为 headerformqueryspring-doc.cadn.net.cn

  • 用户信息用户名属性UserInfo Response 中返回的属性的名称,该属性引用最终用户的 Name 或 Identifier。spring-doc.cadn.net.cn

<oauth2-resource-server>

添加BearerTokenAuthenticationFilter,BearerTokenAuthenticationEntryPointBearerTokenAccessDeniedHandler添加到配置中。 此外,要么<jwt><opaque-token>必须指定。spring-doc.cadn.net.cn

<oauth2-resource-server 的 Parents 元素>

<oauth2-resource-server> 属性

  • 身份验证管理器解析器引用AuthenticationManagerResolver这将解析AuthenticationManager请求时spring-doc.cadn.net.cn

  • bearer-token-resolver-ref (不记名令牌解析器引用)对BearerTokenResolver它将从请求中检索不记名令牌spring-doc.cadn.net.cn

<jwt>

表示将授权 JWT 的 OAuth 2.0 资源服务器spring-doc.cadn.net.cn

<jwt> 属性

<opaque-token>

表示将授权不透明令牌的 OAuth 2.0 资源服务器spring-doc.cadn.net.cn

<opaque-token 的父元素>

<opaque-token> 属性

  • 内省器-参考OpaqueTokenIntrospector.这是一个更大的组件,它会覆盖introspection-uri,client-idclient-secret.spring-doc.cadn.net.cn

  • 内省 URIIntrospection Uri 用于内省不透明令牌的详细信息。应附有client-idclient-secret.spring-doc.cadn.net.cn

  • 身份验证转换器引用OpaqueTokenAuthenticationConverter.负责将成功的自省结果转换为Authentication实例。spring-doc.cadn.net.cn

<依赖方注册>

向 SAML 2.0 身份提供程序注册 (ClientRegistration) 的信赖方的容器元素。spring-doc.cadn.net.cn

<依赖方注册>

表示向 SAML 2.0 身份提供程序注册的信赖方spring-doc.cadn.net.cn

<relying-party-registration 的父元素>

<relian-party-registration> 属性

  • assertion-consumer-service-location (断言使用者服务位置)AssertionConsumerService 位置。相当于<AssertionConsumerService Location="…​"/>在依赖方的<SPSSODescriptor>.spring-doc.cadn.net.cn

  • assertion-consumer-service-binding 的 AssertionConsumerService 绑定。相当于<AssertionConsumerService Binding="…​"/>在依赖方的<SPSSODescriptor>. 支持的值为 POSTREDIRECT。spring-doc.cadn.net.cn

  • 单点注销服务位置SingleLogoutService 位置。等效于 <SingleLogoutService Location=“...“/> 在依赖方的 <SPSSODescriptor>.spring-doc.cadn.net.cn

  • 单点注销服务响应位置SingleLogoutService ResponseLocation 的 ResponseLocation 中。等效于 <SingleLogoutService ResponseLocation=“...“/> 在依赖方的 <SPSSODescriptor>.spring-doc.cadn.net.cn

  • 单点注销服务绑定SingleLogoutService 绑定。等效于 <SingleLogoutService Binding=“...“/> 在依赖方的 <SPSSODescriptor>. 支持的值为 POSTREDIRECT。spring-doc.cadn.net.cn

<解密凭证>

与信赖方关联的解密凭证。spring-doc.cadn.net.cn

<decryption-credential> 属性

<签名凭据>

与信赖方关联的签名凭证。spring-doc.cadn.net.cn

<verification-credential> 属性

<asserting-party>

SAML 2.0 断言方的配置信息。spring-doc.cadn.net.cn

<asserting-party 的父元素>

<asserting-party> 属性

  • want-authn-requests-signed 请求这WantAuthnRequestsSigned设置,指示断言方希望依赖方应签署AuthnRequest在发送之前。spring-doc.cadn.net.cn

  • 签名算法的列表org.opensaml.saml.ext.saml2alg.SigningMethod此断言方的算法,按优先顺序排列。spring-doc.cadn.net.cn

  • 单点注销服务位置SingleLogoutService 位置。等效于 <SingleLogoutService Location=“...“/> 在断言方的 <IDPSSODescriptor> 中。spring-doc.cadn.net.cn

  • 单点注销服务响应位置SingleLogoutService ResponseLocation 的 ResponseLocation 中。等效于 <SingleLogoutService ResponseLocation=“...“/> 在断言方的 <IDPSSODescriptor> 中。spring-doc.cadn.net.cn

  • 单点注销服务绑定SingleLogoutService 绑定。等效于 <SingleLogoutService Binding=“...“/> 在断言方的 <IDPSSODescriptor> 中。 支持的值为 POSTREDIRECT。spring-doc.cadn.net.cn

<encryption-credential>

与断言方关联的加密凭证。spring-doc.cadn.net.cn

<encryption-credential 的父元素>

<encryption-credential> 属性

<验证凭证>

与断言方关联的验证凭证。spring-doc.cadn.net.cn

<verification-credential 的父元素>

<verification-credential> 属性

<http-basic>

添加BasicAuthenticationFilterBasicAuthenticationEntryPoint添加到配置中。 如果未启用基于表单的登录,则后者将仅用作配置入口点。spring-doc.cadn.net.cn

<http-basic 的父元素>

<http-basic> 属性

  • 身份验证详细信息源引用AuthenticationDetailsSource将由 Authentication 过滤器使用spring-doc.cadn.net.cn

<http-firewall> 元素

这是一个顶级元素,可用于注入HttpFirewallFilterChainProxy由 namespace 创建。 默认实现应适用于大多数应用程序。spring-doc.cadn.net.cn

<http-firewall> 属性

<拦截 url>

此元素用于定义应用程序感兴趣的 URL 模式集,并配置应如何处理这些模式。 它用于构造FilterInvocationSecurityMetadataSourceFilterSecurityInterceptor. 它还负责配置ChannelProcessingFilter例如,如果特定 URL 需要通过 HTTPS 访问。 将指定的模式与传入请求匹配时,将按照声明元素的顺序进行匹配。 因此,最具体的模式应该放在最前面,最通用的模式应该放在最后。spring-doc.cadn.net.cn

<intercept-url> 属性

  • 访问列出将存储在FilterInvocationSecurityMetadataSource对于定义的 URL 模式/方法组合。 这应该是安全配置属性(例如角色名称)的逗号分隔列表。spring-doc.cadn.net.cn

  • 方法HTTP 方法,将与模式和 servlet 路径(可选)结合使用,以匹配传入请求。 如果省略,则任何方法都将匹配。 如果指定了带和不带方法的相同模式,则特定于方法的匹配将优先。spring-doc.cadn.net.cn

  • 模式定义 URL 路径的模式。 内容将取决于request-matcher属性,因此如果 Spring MVC 在 Classpath 中,则默认为 MVC 匹配器。spring-doc.cadn.net.cn

  • requires-channel可以是 “http” 或 “https”,具体取决于应分别通过 HTTP 还是 HTTPS 访问特定 URL 模式。 或者,当没有首选项时,可以使用值 “any”。 如果此属性存在于任何<intercept-url>元素,则ChannelProcessingFilter将添加到 Filter 堆栈中,并将其其他依赖项添加到 Application 上下文中。spring-doc.cadn.net.cn

如果<port-mappings>配置,这将由SecureChannelProcessorInsecureChannelProcessorbean 来确定用于重定向到 HTTP/HTTPS 的端口。spring-doc.cadn.net.cn

此属性对 filter-security-metadata-source 无效
  • servlet 路径Servlet 路径,将与模式和 HTTP 方法结合使用,以匹配传入请求。 此属性仅在 request-matcher 为 'mvc' 时适用。 此外,仅在以下 2 个用例中需要该值:1) 有 2 个或更多HttpServletServletContext映射以 开头 和 不同;2) 模式以已注册的相同值开始'/'HttpServletpath,不包括默认值 (root)HttpServlet '/'.spring-doc.cadn.net.cn

此属性对 filter-security-metadata-source 无效

<哎呀>

将 J2eePreAuthenticatedProcessingFilter 添加到过滤器链中,以提供与容器身份验证的集成。spring-doc.cadn.net.cn

<jee 的父元素>

<jee> 属性

  • 可映射角色要在传入的 HttpServletRequest 中查找的角色的逗号分隔列表。spring-doc.cadn.net.cn

<注销>

添加LogoutFilter添加到筛选器堆栈中。 这配置了SecurityContextLogoutHandler.spring-doc.cadn.net.cn

<logout 的父元素>

<logout> 属性

  • 删除 Cookie以逗号分隔的 Cookie 名称列表,用户注销时应删除这些 Cookie 的名称。spring-doc.cadn.net.cn

  • 无效会话映射到invalidateHttpSessionSecurityContextLogoutHandler. 默认为 “true”,因此会话将在注销时失效。spring-doc.cadn.net.cn

  • 注销成功网址用户注销后将转到的目标 URL。 默认为 <form-login-login-page>/?logout(即 /login?logout)spring-doc.cadn.net.cn

    设置此属性将注入SessionManagementFilter替换为SimpleRedirectInvalidSessionStrategy配置了 Property。 当提交无效的会话 ID 时,将调用策略,并重定向到配置的 URL。spring-doc.cadn.net.cn

  • 注销 URL将导致注销的 URL(即,将由过滤器处理的 URL)。 默认为 “/logout”。spring-doc.cadn.net.cn

  • 成功处理程序引用可用于提供LogoutSuccessHandler注销后将调用该 API 来控制导航。spring-doc.cadn.net.cn

<saml2-login>

SAML 2.0 登录功能使用 SAML 2.0 服务提供商配置身份验证支持。spring-doc.cadn.net.cn

<saml2-login 的父元素>

<saml2-login> 属性

  • authentication-success-handler-ref (身份验证成功处理程序引用)对AuthenticationSuccessHandler.spring-doc.cadn.net.cn

  • authentication-failure-handler-ref (身份验证失败处理程序引用)对AuthenticationFailureHandler.spring-doc.cadn.net.cn

<saml2-logout>

SAML 2.0 单点注销功能配置了对 RP 和 AP 发起的 SAML 2.0 单点注销的支持。spring-doc.cadn.net.cn

<saml2-logout 的父元素>

<saml2-logout> 属性

  • logout-request-validator-ref (登录请求验证器引用)对Saml2LogoutRequestValidator.spring-doc.cadn.net.cn

  • logout-response-validator-ref (登录响应验证器引用)对Saml2LogoutResponseValidator.spring-doc.cadn.net.cn

<密码管理>

此元素配置密码管理。spring-doc.cadn.net.cn

<password-management 的父元素>

<password-management> 属性

<端口映射>

默认情况下,的PortMapperImpl将添加到配置中,以用于重定向到安全和不安全的 URL。 此元素可以选择用于覆盖该类定义的默认映射。 每个孩子<port-mapping>元素定义一对 HTTP:HTTPS 端口。 默认映射为 80:443 和 8080:8443。 覆盖这些参数的示例可以在 重定向到 HTTPS 中找到。spring-doc.cadn.net.cn

<port-mappings 的父元素>

<port-mappings的子元素>

<端口映射>

提供在强制重定向时将 http 端口映射到 https 端口的方法。spring-doc.cadn.net.cn

<port-mapping 的父元素>

<端口映射> 属性

<记住我>

添加RememberMeAuthenticationFilter添加到堆栈中。 这反过来将配置为TokenBasedRememberMeServices一个PersistentTokenBasedRememberMeServices或用户指定的 bean 实现RememberMeServices取决于属性设置。spring-doc.cadn.net.cn

<remember-me> 的父元素

<remember-me> 属性

  • authentication-success-handler-ref (身份验证成功处理程序引用)设置authenticationSuccessHandler属性RememberMeAuthenticationFilter如果需要自定义导航。 该值应为AuthenticationSuccessHandlerbean 中。spring-doc.cadn.net.cn

  • 数据源引用DataSource豆。 如果已设置,则PersistentTokenBasedRememberMeServices将使用并配置一个JdbcTokenRepositoryImpl实例。spring-doc.cadn.net.cn

  • remember-me-参数用于切换 remember-me 身份验证的请求参数的名称。 默认为 “remember-me”。 映射到 的 “parameter” 属性AbstractRememberMeServices.spring-doc.cadn.net.cn

  • 钥匙映射到 的 “key” 属性AbstractRememberMeServices. 应设置为唯一值,以确保 remember-me cookie 仅在一个应用程序中有效[3]. 如果未设置,将生成安全随机值。 由于生成安全随机值可能需要一段时间,因此在使用“记住我”功能时,显式设置此值有助于缩短启动时间。spring-doc.cadn.net.cn

  • services-alias 的导出内部定义的RememberMeServices作为 Bean 别名,允许应用程序上下文中的其他 bean 使用它。spring-doc.cadn.net.cn

  • 服务-ref允许完全控制RememberMeServices过滤器将使用的实现。 该值应为id实现此接口的应用程序上下文中的 bean。 还应实施LogoutHandler如果正在使用注销过滤器。spring-doc.cadn.net.cn

  • 令牌存储库引用配置PersistentTokenBasedRememberMeServices但允许使用自定义PersistentTokenRepository豆。spring-doc.cadn.net.cn

  • 令牌有效性秒映射到tokenValiditySeconds的属性AbstractRememberMeServices. 指定 remember-me Cookie 应有效的时间段(以秒为单位)。 默认情况下,它的有效期为 14 天。spring-doc.cadn.net.cn

  • 用户服务引用remember-me 服务实现需要访问UserDetailsService,因此必须在应用程序上下文中定义一个。 如果只有一个,则命名空间配置将自动选择并使用它。 如果有多个实例,则可以指定一个 Beanid显式使用此属性。spring-doc.cadn.net.cn

<request-cache> 元素

设置RequestCache实例,该实例将被ExceptionTranslationFilter要在调用AuthenticationEntryPoint.spring-doc.cadn.net.cn

<request-cache> 的父元素

<request-cache> 属性

<会话管理>

会话管理相关功能是通过添加SessionManagementFilter添加到筛选器堆栈中。spring-doc.cadn.net.cn

<session-management 的父元素>

<session-management> 属性

  • 身份验证策略显式调用将此属性设置为 true 意味着SessionManagementFilter不会注入,并且需要显式调用 SessionAuthenticationStrategy。spring-doc.cadn.net.cn

  • 无效会话 URL设置此属性将注入SessionManagementFilter替换为SimpleRedirectInvalidSessionStrategy配置了 Property。 当提交无效的会话 ID 时,将调用策略,并重定向到配置的 URL。spring-doc.cadn.net.cn

  • 无效会话 URL允许注入 SessionManagementFilter 使用的 InvalidSessionStrategy 实例。 使用 this 或invalid-session-url属性,但不能同时共享两者。spring-doc.cadn.net.cn

  • 会话身份验证错误 URL定义错误页面的 URL,当 SessionAuthenticationStrategy 引发异常时应显示该页面。 如果未设置,将向客户端返回未经授权的 (401) 错误代码。 请注意,如果在基于表单的登录期间发生错误,则此属性不适用,其中身份验证失败的 URL 将优先。spring-doc.cadn.net.cn

  • 会话身份验证策略引用允许注入 SessionManagementFilter 使用的 SessionAuthenticationStrategy 实例spring-doc.cadn.net.cn

  • 会话固定保护指示在用户进行身份验证时如何应用会话固定保护。 如果设置为 “none”,则不会应用任何保护。 “newSession”将创建一个新的空会话,仅迁移与 Spring Security 相关的属性。 “migrateSession” 将创建一个新会话并将所有会话属性复制到新会话中。 在 Servlet 3.1 (Java EE 7) 和更新的容器中,指定 “changeSessionId” 将保留现有会话并使用容器提供的会话固定保护 (HttpServletRequest#changeSessionId())。 在 Servlet 3.1 和更新的容器中默认为 “changeSessionId”,在较旧的容器中默认为 “migrateSession”。 如果在较旧的容器中使用 “changeSessionId”,则引发异常。spring-doc.cadn.net.cn

    如果启用了会话固定保护,则SessionManagementFilter注入了适当配置的DefaultSessionAuthenticationStrategy. 有关更多详细信息,请参阅此类的 Javadoc。spring-doc.cadn.net.cn

<session-management 的子元素>

<并发控制>

添加了对并发会话控制的支持,允许对用户可以拥有的活动会话数施加限制。 一个ConcurrentSessionFilter将创建,并且ConcurrentSessionControlAuthenticationStrategy将与SessionManagementFilter. 如果form-login元素,则 Strategy 对象也将被注入到创建的身份验证过滤器中。 一个SessionRegistry(一个SessionRegistryImpl实例(除非用户希望使用自定义 bean)将创建供策略使用。spring-doc.cadn.net.cn

<concurrency-control> 的父元素

<concurrency-control> 属性

  • 如果最大超出错误如果设置为 “true” ,则SessionAuthenticationException将在用户尝试超过允许的最大会话数时引发。 默认行为是使原始会话过期。spring-doc.cadn.net.cn

  • 过期网址如果用户尝试使用已被并发会话控制器“过期”的会话,则由于用户已超过允许的会话数并已在其他位置再次登录,因此他们将被重定向到该 URL。 应设置,除非exception-if-maximum-exceeded已设置。 如果未提供任何值,则只会将过期消息直接写回响应。spring-doc.cadn.net.cn

  • 过期网址允许注入 ConcurrentSessionFilter 使用的 ExpiredSessionStrategy 实例spring-doc.cadn.net.cn

  • 最大会话数映射到maximumSessions的属性ConcurrentSessionControlAuthenticationStrategy. 指定-1作为支持无限会话的值。spring-doc.cadn.net.cn

  • 会话注册表别名对内部会话注册表的引用以在您自己的 bean 或 admin 界面中使用也很有用。 您可以使用session-registry-alias属性,为其指定一个名称,您可以在配置中的其他位置使用该名称。spring-doc.cadn.net.cn

  • 会话注册表引用用户可以提供自己的SessionRegistry使用session-registry-ref属性。 其他并发会话控制 bean 将被连接起来以使用它。spring-doc.cadn.net.cn

<x509>

添加了对 X.509 身份验证的支持。 一X509AuthenticationFilter将添加到堆栈中,并且Http403ForbiddenEntryPointbean 的 bean 创建。 只有在没有使用其他身份验证机制的情况下,才会使用后者(它的唯一功能是返回 HTTP 403 错误代码)。 一个PreAuthenticatedAuthenticationProvider,它将用户权限的加载委托给UserDetailsService.spring-doc.cadn.net.cn

<x509 的父元素>

<x509> 属性

  • subject-principal-regex (主题主体正则表达式)定义一个正则表达式,该表达式将用于从证书中提取用户名(用于UserDetailsService).spring-doc.cadn.net.cn

  • 用户服务引用允许特定的UserDetailsService在配置了多个实例的情况下与 X.509 一起使用。 如果未设置,将尝试自动找到合适的实例并使用该实例。spring-doc.cadn.net.cn

<filter-chain-map>

用于使用 FilterChainMap 显式配置 FilterChainProxy 实例spring-doc.cadn.net.cn

<filter-chain-map> 属性

  • 请求匹配器定义用于匹配传入请求的策略。 目前,选项包括 'ant' (用于 ant 路径模式)、用于正则表达式的 'regex' 和用于不区分大小写的正则表达式的 'ciRegex' 。spring-doc.cadn.net.cn

<filter-chain-map 的子元素>

<filter-chain>

用于定义特定 URL 模式以及应用于与该模式匹配的 URL 的过滤器列表。 当多个 filter-chain 元素组装在一个列表中以配置 FilterChainProxy 时,最具体的模式必须放在列表的顶部,而大多数通用的模式放在底部。spring-doc.cadn.net.cn

<filter-chain> 属性

  • 过滤器对实现Filter. 值 “none” 表示没有Filter应该用于此FilterChain.spring-doc.cadn.net.cn

  • 请求匹配器引用RequestMatcher这将用于确定是否有任何Filterfilters属性。spring-doc.cadn.net.cn

<filter-security-metadata-source>

用于显式配置FilterSecurityMetadataSource Bean 以与FilterSecurityInterceptor一起使用。 通常仅在显式配置 FilterChainProxy 而不是使用 <http> 元素时才需要。 使用的 intercept-url 元素应仅包含 pattern、method 和 access 属性。 任何其他作都将导致配置错误。spring-doc.cadn.net.cn

<filter-security-metadata-source> 属性

  • 请求匹配器定义用于匹配传入请求的策略。 目前,选项包括 'ant' (用于 ant 路径模式)、用于正则表达式的 'regex' 和用于不区分大小写的正则表达式的 'ciRegex' 。spring-doc.cadn.net.cn

  • 使用表达式允许在 <intercept-url> 元素的 'access' 属性中使用表达式,而不是传统的配置属性列表。 默认为 'true'。 如果启用,则每个属性都应包含一个布尔表达式。 如果表达式的计算结果为 'true',则将授予访问权限。spring-doc.cadn.net.cn

<filter-security-metadata-source> 的子元素


1. 参见 xref:servlet/configuration/xml-namespace.adoc#ns-web-xml[introductory chapter
2. 此功能实际上只是为了方便而提供的,并不用于生产(其中将选择视图技术,并可用于呈现自定义的登录页面)。类DefaultLoginPageGeneratingFilter负责呈现登录页面,并将根据需要为普通表单登录和/或 OIDC 提供登录表单。
3. 这不会影响PersistentTokenBasedRememberMeServices,其中令牌存储在服务器端。