【问题标题】:Spring-Security: Difference Between /** and /* url pattern in Spring-SecuritySpring-Security:Spring-Security 中 /** 和 /* url 模式之间的区别
【发布时间】:2014-09-16 21:22:08
【问题描述】:

我对 Spring Security 中的 URL 模式有点困惑。因为,在 servlet 核心 http 安全中,//* url 模式用于指定一个或多个目录。 / 用于一个目录,/* 用于多个目录。但是在spring-security中,还引入了/**/**url-pattern在安全方面的主要用途是什么。

【问题讨论】:

    标签: java security spring-security url-pattern


    【解决方案1】:

    /* 和 /** 之间的区别在于,第二个匹配整个目录树,包括子目录,而 /* 只匹配它指定的级别。

    【讨论】:

      【解决方案2】:
       @Override
          protected void configure(HttpSecurity http) throws Exception {
          // ...
          .antMatchers(HttpMethod.GET, "/**").permitAll
          .antMatchers(HttpMethod.POST, "/*").permitAll
          // ...
       }
      

      在此配置中,将允许任何“Get”请求,例如:

      • /书
      • /book/20
      • /book/20/作者

      所以,所有这些 url 都匹配带有模式“/**”的文本。

      帖子”的允许网址:

      • /书
      • /杂志

      以上网址与“/*”匹配

      【讨论】:

        【解决方案3】:

        根据 Spring Security 文档,/** 的主要目的是捕获所有通配符:

        实际上,我们建议您在服务层使用方法安全性,以控制对您的 应用程序,并且不完全依赖于使用在 Web 应用程序级别定义的安全约束。 URL 发生变化,很难考虑应用程序可能支持的所有可能的 URL,并且 如何操纵请求。您应该尝试限制自己使用一些简单的蚂蚁路径 很容易理解。始终尝试使用“默认拒绝”方法,其中您有一个通用通配符 (/** 或 **) 最后定义并拒绝访问。

        我们也不应该忘记这一点

        模式总是按照它们定义的顺序进行评估。因此,更具体的模式在列表中定义得比不太具体的模式更高,这一点很重要。

        因此我们可以有这样的东西:

        <security:http pattern="/rest-service/**"  authentication-manager-ref="authenticationManager" auto-config="false" access-decision-manager-ref="accessDecisionManager">
            <security:intercept-url pattern="/rest-service/report/export/xml" access="AUTH_REPORT_EXPORTXML" />        
            <security:intercept-url pattern="/**" access="AUTH_SYSTEM_LOGIN" />
            <security:http-basic />
        </security:http>
        

        这意味着对于所有请求,我们都需要 AUTH_SYSTEM_LOGIN 权限,但特别是对于 /rest-service/report/export/xml,用户还需要 AUTH_REPORT_EXPORTXML 权限,因为它是上面定义的。正如他们还说的那样,最好不要仅仅依赖这种安全约束,这意味着在服务方法中复制这些安全约束也是很好的,如下所示:

        @Secured("AUTH_REPORT_EXPORTXML")
        

        一般而言,据我了解,/*/** 之间没有区别,只是最后一个捕获了所有通配符。

        【讨论】:

          猜你喜欢
          • 2012-12-15
          • 2020-03-22
          • 1970-01-01
          相关资源
          最近更新 更多