启用spring安全调试基础架构。这将提供人类可读的(多行)调试信息来监控进入安全过滤器的请求。这可能包括敏感信息,例如请求参数或头,并且应该只在开发环境中使用。
如果在应用程序中使用< http >元素,将创建一个名为“springSecurityFilterChain”的过滤器链代理FilterChainProxy
bean,并且使用元素中的配置在过滤器链代理FilterChainProxy中构建过滤器链。从Spring Security 3.1开始,可以使用额外的http元素来添加额外的过滤器链[22]。一些核心过滤器总是在过滤器链中创建,其他的将根据属性和存在的子元素添加到堆栈中。标准过滤器的位置是固定的(参见命名空间介绍中的过滤器顺序表),当用户必须在FilterChainProxy bean中显式配置过滤器链时,消除了以前版本框架的常见错误源。当然,如果您需要完全控制配置,您仍然可以这样做。
所有需要引用身份验证管理器的筛选器AuthenticationManager 都将自动注入由命名空间配置创建的内部实例(有关身份验证管理器AuthenticationManager 的更多信息,请参见介绍章节)。
每个< http >命名空间块总是创建一个SecurityContextPersistenceFilter、一个ExceptionTranslationFilter和一个FilterSecurityInterceptor。这些都是固定的,不能用替代品代替。
< http >元素上的属性控制着核心过滤器的一些属性。
access-decision-manager-ref:可选属性,指定应用于授权超文本传输协议请求的访问决策管理器AccessDecisionManager实现的标识。默认情况下,基于确认AffirmativeBased的实现用于角色投票者RoleVoter
和授权投票者AuthenticatedVoter。
authentication-manager-ref :对此http元素创建的筛选器链FilterChain使用的身份验证管理器AuthenticationManager
的引用。
auto-config:自动注册登录表单、BASIC身份验证、注销服务。如果设置为“真”,将添加所有这些功能(尽管您仍然可以通过提供相应的元素来自定义每个功能的配置)。如果未指定,默认为“假”。不建议使用此属性。请改用显式配置元素,以避免混淆。
create-session:控制spring安全类创建一个超文本传输协议会话。选项包括:
always
如果不存在会话,Spring Security将主动创建会话。ifRequired
仅当需要会话时,Spring Security才会创建一个会话(默认值)。never
Spring Security永远不会创建会话,但是如果应用程序创建了会话,它会使用会话。stateless
Spring Security不会创建会话并忽略获取Spring身份验证的会话。disable-url-rewriting:防止会话标识被附加到应用程序中的网址。如果此属性设置为true,客户端必须使用cookies。默认值为真。
entry-point-ref :通常使用的身份验证输入点AuthenticationEntryPoint
将根据已配置的身份验证机制进行设置。此属性允许通过定义将启动身份验证过程的自定义身份验证入口点AuthenticationEntryPoint
bean来覆盖此行为。
jaas-api-provision:如果可用,将请求作为从JaasAuthenticationToken获取的主题运行,这是通过向堆栈中添加JaasApiIntegrationFilter bean来实现的。默认为false。
name :一个bean标识符,用于引用上下文中其他地方的bean。
once-per-request:对应于筛选器安全性FilterSecurityInterceptor接口的observeOncePerRequest属性。默认为真。
pattern :为http元素定义一个模式控制着将通过它定义的过滤器列表过滤的请求。解释取决于配置的请求匹配器。如果没有定义模式,所有的请求都将被匹配,所以最具体的模式应该首先声明。
realm :设置用于基本身份验证的领域名称(如果启用)。对应于基本身份验证输入点BasicAuthenticationEntryPoint上的realmName属性。
request-matcher :定义在FilterChainProxy中使用的RequestMatcher策略和由拦截url创建的beans,以匹配传入的请求。目前的选项有mvc、ant、regex和ciRegex,分别针对Spring MVC、ant、正则表达式和不区分大小写的正则表达式。使用模式、方法和servlet路径属性为每个拦截url元素创建一个单独的实例。蚂蚁路径使用蚂蚁路径请求匹配器进行匹配,正则表达式使用正则表达式请求匹配器进行匹配,而对于Spring MVC路径匹配,则使用MvcRequestMatcher。请参见这些类的Javadoc,了解关于匹配是如何执行的更多细节。蚂蚁路径是默认策略。
request-matcher-ref :对实现请求匹配器RequestMatcher
的bean的引用,该请求匹配器将确定是否应该使用该筛选器链FilterChain
。这是模式的更强有力的替代。
security :通过将此属性设置为none,请求模式可以映射到空的筛选器链。将不会应用任何安全性,也不会提供任何Spring Security的功能。
security-context-repository-ref:允许将自定义的SecurityContextRepository注入到SecurityContextPersistenceFilter中。
servlet-api-provision:提供不同版本的HttpServletRequest安全方法,如isUserInRole()和getPrincipal(),这些方法是通过向堆栈中添加一个SecurityContextHolderAreRequestFilter bean来实现的。默认为真。
use-expressions:在访问属性中启用EL表达式,如基于表达式的访问控制一章所述。默认值为真。
此元素允许您使用错误页errorPage
属性为ExceptionTranslationFilter使用的默认访问拒绝处理程序AccessDeniedHandler
设置错误页属性,或者使用该属性提供您自己的实现。这将在异常转换过滤器一节中详细讨论。
error-page :如果经过身份验证的用户请求一个他们无权访问的页面,则该用户将被重定向到的拒绝访问页面。
ref:定义对AccessDeniedHandler类型的Spring bean的引用。
这个元素允许配置一个CorsFilter。如果没有指定CorsFilter或CorsConfigurationSource,并且Spring MVC在类路径中,那么将使用一个HandlerMappingIntrospector胸针作为CorsConfigurationSource。
< cors >元素上的属性控制headers元素。
ref:指定CorsFilter的bean名称的可选属性。
cors-configuration-source-ref :可选属性,指定要注入到由XML命名空间创建的CorsFilter中的CorsConfigurationSource的bean名称。
这个元素允许配置附加的(安全的)头和响应一起发送。它使几个标题的配置变得容易,并且允许通过标题元素设置自定义标题。其他信息,请参见参考资料的安全标题部分。
Cache-Control
, Pragma
, and Expires:
可以使用cache-control 元素进行设置。这可以确保浏览器不会缓存您的安全页面。
Strict-Transport-Security:可以使用hsts元素设置严格-传输-安全性。这确保了浏览器自动请求HTTPS用于将来的请求。
X-Frame-Options:可以使用 frame-options元素进行设置。框架选项标题X-Frame-Options header可用于防止点击劫持攻击。
X-XSS-Protection:可以使用xss-protection元素进行设置。浏览器可以使用X-XSS保护头进行基本控制。
X-Content-Type-Options:可以使用内容类型选项content-type-options元素进行设置。“内容类型选项”标题X-Content-Type-Options header阻止了互联网资源管理器从声明的内容类型中嗅探响应。这也适用于谷歌浏览器,当下载扩展时。
Public-Key-Pinning or Public-Key-Pinning-Report-Only:可以使用hpkp元素进行设置。这使得HTTPS网站能够抵制攻击者使用错误颁发的或其他欺诈性的证书进行假冒。
Content-Security-Policy or Content-Security-Policy-Report-Only:可以使用内容安全策略 content-security-policy 元素进行设置。内容安全策略(CSP)是一种机制,网络应用程序可以利用它来减轻内容注入漏洞,如跨站点脚本(XSS)。
Referrer-Policy:可以使用referrer-policy元素进行设置,referrer-Policy是一种web应用程序可以用来管理Referrer字段的机制,该字段包含用户所在的最后一页。
<headers>元素上的属性控制标题元素。
defaults-disabled:可选属性,指定禁用默认的Spring Security的HTTP响应头。默认值为false(包含默认标题)。
disabled :可选属性,指定禁用spring安全的超文本传输协议响应头。默认值为false(启用标题)。
添加Cache-Control
, Pragma
, and Expires
,以确保浏览器不会缓存您的安全页面。
disabled :指定是否应禁用缓存控制。默认值为false。
启用后,会将严格传输安全标头 Strict-Transport-Security 添加到任何安全请求的响应中。这允许服务器指示浏览器在将来的请求中自动使用HTTPS。
disabled :指定是否应禁用严格传输安全性 Strict-Transport-Security。默认值为false。
include-sub-domains:指定是否应包含子域。默认为真。
max-age-seconds:指定主机被视为已知HSTS主机的最长时间。默认一年。
request-matcher-ref :用于确定是否应该设置标头的请求匹配器实例。如果HttpServletRequest.isSecure()为真,则为默认值。
启用后,会将用于HTTP头的公钥锁定扩展添加到任何安全请求的响应中。这使得HTTPS网站能够抵制攻击者使用错误颁发的或其他欺诈性的证书进行假冒。
引脚列表
使用base64编码的SPKI指纹作为值,使用加密哈希算法作为属性来指定pin
启用时,将内容安全策略(CSP)头添加到响应中。CSP是一种机制,网络应用程序可以利用它来减轻内容注入漏洞,如跨站点脚本(XSS)。
启用时,将引用者策略 Referrer Policy 标头添加到响应中。
启用时,会在响应中添加X-Frame-Options标头,这允许较新的浏览器进行一些安全检查,并防止点击劫持攻击。
policy
DENY
页面不能显示在框架中,无论站点是否尝试这样做。当指定框架选项策略时,这是默认设置。SAMEORIGIN
页面只能显示在与页面本身原点相同的框架中。ALLOW-FROM 原点页面只能显示在指定原点的框架中。
换句话说,如果您指定DENY,从其他站点加载时,不仅在框架中加载页面的尝试会失败,从同一站点加载时,这样做的尝试也会失败。另一方面,如果您指定SAMEORIGIN,您仍然可以在框架中使用该页面,只要包含它的站点与提供该页面的站点相同。
strategy 选择使用“AllowFromStrategy ”策略时要使用的ALLOW-FROM 策略。
static
使用一个静态的ALLOW-FROM值。该值可以通过 value 属性来设置。regexp
使用正则表达式来验证传入的请求以及它们是否被允许。正则表达式可以通过 value 属性来设置。可以使用 from-parameter指定用于检索要验证的值的请求参数。whitelist包含允许的域的逗号分隔列表。逗号分隔列表可以通过 value属性来设置。可以使用 from-parameter数指定用于检索要验证的值的请求参数。
将X-XSS-Protection标头添加到响应中,以帮助防止 reflected / Type-1 Cross-Site Scripting (XSS)攻击。这绝不是对XSS袭击的全面保护!
xss-protection-disabled 不要包括反射/类型1跨站点脚本(XSS)保护的标题。
xss-protection-enabled 明确启用或禁用反射/类型1跨站点脚本(XSS)保护。
xss-protection-block 当为真且xss-protection-enabled为真时,将mode=block添加到标头。这向浏览器指示根本不应该加载页面。当false且xss-protection-enabled为true时,当检测到反射攻击时,页面仍将呈现,但响应将被修改以防止攻击。请注意,有时有办法绕过这种模式,这往往会使阻止页面更可取。
向响应中添加值为nosniff的“X-Content-Type-Options”标题。这将禁用IE8+和Chrome扩展的MIME嗅探。
向响应中添加额外的标头,名称和值都需要指定。
HeaderWriter
接口的自定义实现的引用。向堆栈中添加匿名用户身份验证过滤器AnonymousAuthenticationFilter 和匿名用户身份验证提供程序AnonymousAuthenticationProvider。如果您使用的是“身份验证匿名IS_AUTHENTICATED_ANONYMOUSLY ”属性,则需要此项。
该元素将为应用程序添加跨站点请求伪造(CSRF)保护。它还更新了默认的请求缓存,以便在身份验证成功后仅重放“获取”请求。更多信息可在参考资料的“跨站点伪造请求(CSRF)”部分找到。
<csrf> Attributes
disabled 可选属性,指定禁用春季安全的CSRF保护。默认值为假(启用CSRF保护)。强烈建议启用CSRF保护。
token-repository-ref 要使用的CsrfTokenRepository。默认为HttpSessionCsrfTokenRepository。
request-matcher-ref 用于确定是否应该应用CSRF的请求匹配器实例。默认为除 "GET", "TRACE", "HEAD", "OPTIONS"之外的任何超文本传输协议方法。
此元素用于向过滤器链添加过滤器。它不创建任何额外的bean,而是用于选择已经在应用程序上下文中定义的javax.servlet.Filter类型的bean,并将其添加到Spring Security维护的筛选器链中的特定位置。完整的细节可以在命名空间章节中找到。
定义在启用基于表达式的访问控制时将使用的安全表达式处理程序实例。如果不提供,将使用默认实现(不支持ACL)。
用于将用户名密码身份验证过滤器UsernamePasswordAuthenticationFilter
添加到过滤器堆栈,并将登录身份验证入口点LoginUrlAuthenticationEntryPoint添加到应用程序上下文,以按需提供身份验证。这将始终优先于其他命名空间创建的入口点。如果未提供属性,将在网址“//login”处自动生成登录页面。可以使用<form-login>
属性自定义行为。
AuthenticationFailureHandler
bean的名称。authenticationFailureUrl
属性。定义登录失败时浏览器将被重定向到的网址。默认为/login?error,将由自动登录页面生成器自动处理,用错误消息重新呈现登录页面。AuthenticationSuccessHandler
bean的名称。默认情况下,会使用SaveDrequestAwarAuThEnticationSuccessHandler的实现,并注入默认的目标urldefault-target-url。loginFormUrl
属性。默认为“/login”。ForwardAuthenticationSuccessHandler
映射到用户名密码身份验证筛选器UsernamePasswordAuthenticationFilter的身份验证成功处理程序authenticationSuccessHandler
属性。ForwardAuthenticationFailureHandler
映射到用户名密码身份验证筛选器UsernamePasswordAuthenticationFilter的身份验证失败处理程序authenticationFailureHandler
属性。向配置中添加基本身份验证筛选器BasicAuthenticationFilter
和基本身份验证输入点BasicAuthenticationEntryPoint
。后者仅在未启用基于表单的登录时用作配置入口点。
这是一个顶级元素,可用于将HttpFirewall的自定义实现注入到由命名空间创建的筛选器链代理FilterChainProxy
中。默认实现应该适用于大多数应用程序。
这个元素用于定义应用程序感兴趣的一组网址模式,并配置如何处理它们。它用于构造过滤器安全性接口FilterSecurityInterceptor使用的过滤器调用安全性数据源FilterInvocationSecurityMetadataSource
。例如,如果HTTPS需要访问特定的网址,它还负责配置一个通道处理过滤器ChannelProcessingFilter
。将指定的模式与传入的请求进行匹配时,匹配是按照元素声明的顺序进行的。因此,最具体的模式应该放在第一位,最一般的模式应该放在最后。
FilterInvocationSecurityMetadataSource
中的访问属性。这应该是安全配置属性(如角色名称)的逗号分隔列表。如果添加了<port-mappings>配置,则安全通道处理器SecureChannelProcessor
和安全通道处理器InsecureChannelProcessor
beans将使用该配置来确定用于重定向到HTTP/HTTPS的端口。
此属性对于 filter-security-metadata-source无效 |
此属性对于 filter-security-metadata-source无效 |
将J2ee PreauthenticatedProcessingFilter添加到筛选器链,以提供与容器身份验证的集成。
将登录筛选器LogoutFilter
添加到筛选器堆栈。这是用SecurityContextLogoutHandler配置的。
logout-success-url
用户注销后将被带到的目标网址。默认为 <form-login-login-page>/?logout (i.e. /login?logout)。设置此属性将使用配置了属性值的SimpleRedirectionValidSessionStrategy注入会话管理筛选器SessionManagementFilter
。当提交无效的会话标识时,将调用策略,重定向到配置的网址。
类似于<form-log