对于最新的稳定版本,请使用 Spring Security 6.5.3spring-doc.cadn.net.cn

Web 应用程序安全

<调试>

启用 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将自动注入命名空间配置创建的内部实例。spring-doc.cadn.net.cn

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

<http> 属性

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

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

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

  • 访问决策管理器-ref指定AccessDecisionManager实现,这应该用于授权 HTTP 请求。 默认情况下,一个AffirmativeBased实现用于RoleVoterAuthenticatedVoter.spring-doc.cadn.net.cn

  • 身份验证经理-refAuthenticationManager用于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 不会创建会话并忽略获取 Spring 的会话Authentication.spring-doc.cadn.net.cn

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

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

  • jaas-api-provision如果可用,则将请求作为SubjectJaasAuthenticationToken这是通过添加一个JaasApiIntegrationFilterbean 到堆栈。 默认为false.spring-doc.cadn.net.cn

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

  • 过滤所有调度程序类型对应于shouldFilterAllDispatcherTypes属性的AuthorizationFilter.当use-authorization-manager=false. 默认为true.spring-doc.cadn.net.cn

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

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

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

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

  • 安全可以通过将此属性设置为none. 不会应用任何安全性,并且 Spring Security 的任何功能都不可用。spring-doc.cadn.net.cn

  • 安全上下文存储库引用允许注入自定义SecurityContextHolderStrategySecurityContextPersistenceFilter,SecurityContextHolderFilter,BasicAuthenticationFilter,UsernamePasswordAuthenticationFilter,ExceptionTranslationFilter,LogoutFilter,等。spring-doc.cadn.net.cn

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

  • 安全上下文存储库引用允许注入自定义SecurityContextRepository进入SecurityContextPersistenceFilter.spring-doc.cadn.net.cn

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

<访问拒绝处理程序>

此元素允许您将errorPage默认值的属性AccessDeniedHandlerExceptionTranslationFilter,使用 error-page 属性,或使用 ref 属性提供您自己的实现。 ExceptionTranslationFilter 部分对此进行了更详细的讨论。spring-doc.cadn.net.cn

<access-denied-handler> 的父元素

<access-denied-handler> 属性

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

<科尔斯>

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

<cors> 属性

上的属性<cors>element 控制 headers 元素。spring-doc.cadn.net.cn

  • cors-配置-源-ref指定 Bean 名称的可选属性CorsConfigurationSource注入CorsFilter由 XML 命名空间创建。spring-doc.cadn.net.cn

<cors> 的父元素

<标头>

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

<headers>属性

上的属性<headers>element 控制 headers 元素。spring-doc.cadn.net.cn

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

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

<标头>的父元素

<缓存控制>

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

<cache-control> 属性

<cache-control> 的父元素

<hsts>

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

<hsts> 属性

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

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

<hsts> 的父元素

<HPKP的>

启用后,将 HTTP 标头的公钥固定扩展添加到任何安全请求的响应中。 这使得 HTTPS 网站能够使用错误颁发或其他欺诈性证书来抵御攻击者的冒充。spring-doc.cadn.net.cn

<hpkp> 属性

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

<hpkp> 的父元素

<针>

<pins> 的子元素

<引脚>

使用 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 标头添加到响应中。spring-doc.cadn.net.cn

<referrer-policy>属性

<referrer-policy>的父元素

<功能策略>

启用后,将功能策略标头添加到响应中。spring-doc.cadn.net.cn

<feature-policy> 属性

<feature-policy> 的父元素

<帧选项>

启用后,将 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> 的父元素

<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> 的父元素

<标头>

向响应添加其他标头,需要指定名称和值。spring-doc.cadn.net.cn

<header-attributes> 属性

<header> 的父元素

<匿名>

添加一个AnonymousAuthenticationFilter到堆栈和AnonymousAuthenticationProvider. 如果您使用IS_AUTHENTICATED_ANONYMOUSLY属性。spring-doc.cadn.net.cn

<anonymous> 的父元素

<匿名>属性

  • 启用使用默认命名空间设置时,将自动启用匿名“身份验证”工具。 您可以使用此属性禁用它。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

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

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

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

<自定义过滤器>

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

<custom-filter> 的父元素

<custom-filter> 属性

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

  • 以前紧接在 custom-filter 之前的过滤器,自定义过滤器应放置在链中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这将由身份验证筛选器使用spring-doc.cadn.net.cn

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

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

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

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

  • 身份验证成功转发网址地图ForwardAuthenticationSuccessHandlerauthenticationSuccessHandler属性UsernamePasswordAuthenticationFilter.spring-doc.cadn.net.cn

  • 身份验证失败转发 URL地图ForwardAuthenticationFailureHandlerauthenticationFailureHandler属性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> 属性

  • jwt-解码器-工厂-引用引用JwtDecoderFactory使用者OidcAuthorizationCodeAuthenticationProvider.spring-doc.cadn.net.cn

<oauth2-客户端>

<oauth2-client> 的父元素

<oauth2-client> 属性

<oauth2-client> 的子元素

<授权代码授予>

<authorization-code-grant> 的父元素

<authorization-code-grant> 属性

<客户端注册>

向 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> 属性

  • 客户端身份验证方法用于向提供程序对客户端进行身份验证的方法。 支持的值为 client_secret_basicclient_secret_postprivate_key_jwtclient_secret_jwtnone(公共客户端)。spring-doc.cadn.net.cn

  • 授权授予类型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、电子邮件或配置文件。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> 的父元素

<provider> 属性

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

  • 用户信息身份验证方法将访问Tokens发送到 UserInfo 终结点时使用的身份验证方法。 支持的值是 headerformqueryspring-doc.cadn.net.cn

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

<oauth2-resource-server>

添加一个BearerTokenAuthenticationFilter,BearerTokenAuthenticationEntryPointBearerTokenAccessDeniedHandler到配置。 此外,无论是<jwt><opaque-token>必须指定。spring-doc.cadn.net.cn

<oauth2-resource-server> 的父元素

<oauth2-resource-server> 属性

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

  • 持有者Tokens解析器引用引用BearerTokenResolver这将从请求中检索持有者Tokensspring-doc.cadn.net.cn

<JWT>

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

<jwt> 属性

<不透明Tokens>

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

<opaque-token> 的父元素

<opaque-token> 属性

  • 内省者-ref引用OpaqueTokenIntrospector.这是一个较大的组件,可覆盖introspection-uri,client-idclient-secret.spring-doc.cadn.net.cn

  • 内省 uriIntrospection Uri 用于内省不透明Tokens的细节。应附有client-idclient-secret.spring-doc.cadn.net.cn

  • 客户端 ID用于针对提供的客户端身份验证的客户端 IDintrospection-uri.spring-doc.cadn.net.cn

  • 客户端密钥用于针对提供的客户端身份验证的客户端密钥introspection-uri.spring-doc.cadn.net.cn

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

<依赖方注册>

向 SAML 2.0 标识提供者注册 (ClientRegistration) 的信赖方的容器元素。spring-doc.cadn.net.cn

<reliing-party-registrations> 的子元素

<依赖方注册>

表示向 SAML 2.0 标识提供者注册的信赖方spring-doc.cadn.net.cn

<reliing-party-registration> 的父元素

<rereliing-party-registration> 属性

  • 断言消费者服务位置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 响应位置。相当于 <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> 的父元素

<decryption-credential> 属性

<签名凭据>

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

<verification-credential> 的父元素

<verification-credential> 属性

<断言方>

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

<asserting-party> 的父元素

<asserting-party> 属性

  • 想要授权请求签名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 响应位置。相当于 <SingleLogoutService ResponseLocation=“...“/> 在断言方的 <IDPSSODescriptor> 中。spring-doc.cadn.net.cn

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

<加密凭证>

与断言方关联的加密凭据。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这将由身份验证筛选器使用spring-doc.cadn.net.cn

<http-firewall> 元素

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

<http-firewall> 属性

<截距网址>

此元素用于定义应用程序感兴趣的 URL 模式集,并配置应如何处理它们。它用于构造FilterInvocationSecurityMetadataSourceFilterSecurityInterceptor. 它还负责配置ChannelProcessingFilter例如,如果需要通过 HTTPS 访问特定 URL。 将指定的模式与传入请求进行匹配时,匹配将按照元素的声明顺序完成。 因此,最具体的模式应该排在第一位,最笼统的模式应该排在最后。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 在类路径中,则默认为 MVC 匹配器。spring-doc.cadn.net.cn

  • 请求匹配器引用RequestMatcher这将用于确定这是否<intercept-url>被使用。spring-doc.cadn.net.cn

  • requires-channel可以是“http”或“https”,具体取决于是否应分别通过 HTTP 或 HTTPS 访问特定 URL 模式。 或者,当没有首选项时,可以使用值“any”。 如果此属性存在于任何<intercept-url>元素,然后是ChannelProcessingFilter将添加到过滤器堆栈中,并将其附加依赖项添加到应用程序上下文中。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 个或更多HttpServlet的注册在ServletContext映射以 和 开头的映射不同;2) 模式以注册值的相同值开头'/'HttpServletpath,不包括默认值(根)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> 的父元素

<注销>属性

  • 删除 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配置了属性值。 当提交无效的会话 ID 时,将调用策略,重定向到配置的 URL。spring-doc.cadn.net.cn

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

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

<saml2-登录>

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

<saml2-login> 的父元素

<saml2-login> 属性

<saml2-注销>

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

<saml2-logout> 的父元素

<saml2-logout> 属性

<密码管理>

此元素配置密码管理。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

<端口映射的父元素>

<端口映射>的子元素

<端口映射>

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

<端口映射>的父元素

<端口映射>属性

<记住我>

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

<记住我>的父元素

<记住我>属性

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

  • 数据源引用DataSource豆。 如果设置了此设置,PersistentTokenBasedRememberMeServices将使用JdbcTokenRepositoryImpl实例。spring-doc.cadn.net.cn

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

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

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

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

  • Tokens存储库-ref配置一个PersistentTokenBasedRememberMeServices但允许使用自定义PersistentTokenRepository豆。spring-doc.cadn.net.cn

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

  • 用户服务引用记住我服务实现需要访问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

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

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

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

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

  • 会话固定保护指示在用户进行身份验证时如何应用会话固定保护。 如果设置为“无”,则不会应用任何保护。 “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

<会话管理>的子元素

<并发控制>

添加了对并发会话控制的支持,允许对用户可以拥有的活动会话数进行限制。 一个ConcurrentSessionFilter将创建,并且ConcurrentSessionControlAuthenticationStrategy将与SessionManagementFilter. 如果form-login元素,则策略对象也将被注入到创建的身份验证过滤器中。 的实例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 或管理界面中使用也很有用。 您可以使用session-registry-alias属性,为其指定一个可以在配置中的其他地方使用的名称。spring-doc.cadn.net.cn

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

<x509>

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

<x509 的父元素>

<x509> 属性

  • 主题-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> 的子元素

<滤链>

用于定义特定的 URL 模式以及适用于与该模式匹配的 URL 的过滤器列表。 当多个筛选链元素组合在列表中以配置 FilterChainProxy 时,必须将最具体的模式放在列表的顶部,而最通用的模式则放在底部。spring-doc.cadn.net.cn

<filter-chain> 的父元素

<filter-chain> 属性

  • 过滤器以逗号分隔的对 Spring bean 的引用列表,该 Spring Bean 实现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[介绍性章节
2. 此功能实际上只是为了方便而提供的,不适用于生产环境(其中将选择视图技术并可用于呈现自定义登录页面)。班级DefaultLoginPageGeneratingFilter负责呈现登录页面,并在需要时提供普通格式登录和/或 OIDC 的登录表单。
3.这不影响使用PersistentTokenBasedRememberMeServices,Tokens存储在服务器端。