Spring Security Config : HttpSecurity安全配置器 SessionManagementConfigurer

  • urity内置地对该接口仅提供了一个实现就是SimpleRedirectInvalidSessionStrategy
    #invalidSessionStrategy#invalidSessionUrl都被调用时,#invalidSessionStrategy会生效;

  • #sessionAuthenticationErrorUrl

    定义SessionAuthenticationStrategy抛出异常时要跳转的URL。如果未设置该属性,SessionAuthenticationStrategy抛出异常时,会返回402给客户端。

    注意在基于表单的登录失败时,该属性并不应用。因为此时表单认证失败URL会先被跳转。

  • #sessionAuthenticationFailureHandler

    定义SessionAuthenticationStrategy抛出异常时要应用的认证失败处理器AuthenticationFailureHandler。如果未设置该属性,SessionAuthenticationStrategy抛出异常时,会返回402给客户端。

    注意在基于表单的登录失败时,该属性并不应用。因为此时表单认证失败URL会先被跳转。

    如果#sessionAuthenticationErrorUrl 和#sessionAuthenticationFailureHandler都被调用,#sessionAuthenticationFailureHandler会生效;

  • #enableSessionUrlRewriting

    调用该方法设置属性enableSessionUrlRewriting.如果enableSessionUrlRewriting属性被设置为true,使用HttpServletResponse#encodeRedirectURL(String)/HttpServletResponse#encodeURL(String)时,允许将HTTP session信息重写到URL中。该方法对应的属性enableSessionUrlRewriting缺省为false,不允许Http session重写到URL

  • #sessionCreationPolicy

    设置会话创建策略SessionCreationPolicy。如果不设置,则会尝试使用公共对象中设置的SessionCreationPolicy。如果公共对象中也没有设置会话创建策略,则使用缺省的会话创建策略SessionCreationPolicy.IF_REQUIRED

  • #sessionAuthenticationStrategy

    允许设置一个会话认证策略。如果不设置,会使用缺省值。缺省值是SessionFixationProtectionStrategy(针对Servlet 3.1)/ChangeSessionIdAuthenticationStrategy(针对Servlet 3.1+)

  • #maximumSessions

    设置每个用户的最大并发会话数量。此方法返回一个ConcurrencyControlConfigurer,这也是一个安全配置器,设置每个用户会话数量超出单用户最大会话并发数时如何处理。

    • ConcurrencyControlConfigurer的配置能力如下
      • #expiredUrl

        设置一个URL。如果某用户达到单用户最大会话并发数后再次请求新会话,则将最老的会话超时并将其跳转到该URL

      • #expiredSessionStrategy

        设置一个会话信息超时策略对象SessionInformationExpiredStrategy。如果某用户达到单用户最大会话并发数后再次请求新会话,则调用该策略超时哪个会话以及进行什么样的超时处理。
        如果#expiredUrl 和#expiredSessionStrategy都被调用,#expiredSessionStrategy生效。

      • #maxSessionsPreventsLogin

        设置属性maxSessionsPreventsLogin.如果设置为true,则某用户达到单用户最大会话并发数后再次请求登录时会被拒绝登录。
        缺省情况下maxSessionsPreventsLoginfalse。则某用户达到单用户最大会话并发数后再次请求登录时,其最老会话会被超时并被重定向到#expiredUrl所设置的URL(或者被#expiredSessionStrategy所设置策略处理)。

      • #sessionRegistry

        设置所要使用的SessionRegistry,不设置时的缺省值为一个SessionRegistryImpl

  • #sessionFixation

    此方法返回一个SessionFixationConfigurer,这也是一个安全配置器,专门对Session Fixcation保护机制做出设置。

    • SessionFixationConfigurer的配置能力如下
      • #newSession

        设置固定会话攻击保护策略为SessionFixationProtectionStrategy,该策略会在用户会话认证成功时创建新的会话,但不会复制旧会话的属性。

      • #migrateSession

        设置固定会话攻击保护策略为SessionFixationProtectionStrategy,该策略会在用户会话认证成功时创建新的会话,并且复制旧会话的属性。

      • #changeSessionId

        设置固定会话攻击保护策略为ChangeSessionIdAuthenticationStrategy,仅针对Servlet 3.1+,在用户会话认证成功时调用Servlet 3.1方法HttpServletRequest#changeSessionId()变更会话ID并保留所有会话属性。在Servlet 3.0或者更早版本中使用该策略会触发异常IllegalStateException

      • #none

        设置固定会话攻击保护策略为NullAuthenticatedSessionStrategy。这种策略其实是关闭Spring Security的固定会话攻击保护策略。该方案多用在应用已经启用了其他的固定会话攻击保护策略的情况下,比如使用了应用服务器端固定会话攻击保护策略。如果没有采用其他固定会话攻击保护策略,建议不要使用此选项。

继承关系

SessionManagementConfigurer

使用

    // HttpSecurity 类代码片段
	public SessionManagementConfigurer<HttpSecurity> sessionManagement() throws Exception {
		return getOrApply(new SessionManagementConfigurer<>());
	}
posted @ 2020-08-06 11:50  芬乐  阅读(1095)  评论(0编辑  收藏  举报