【问题标题】:spring security filter chain url pattern matchingspring security过滤器链url模式匹配
【发布时间】:2013-06-16 18:15:06
【问题描述】:

我是 Spring 安全的新手。现在我正在阅读它的文档。我对其过滤器链 url 模式有疑问:

如文档中所述:

可以使用多个 http 元素为不同的 URL 模式定义不同的安全配置。每个元素在内部 FilterChainProxy 和应该映射到它的 URL 模式中创建一个过滤器链。元素将按照它们声明的顺序添加,因此必须再次首先声明最具体的模式。

还举了一个例子:

  <!-- Stateless RESTful service using Basic authentication -->
  <http pattern="/restful/**" create-session="stateless">
    <intercept-url pattern='/**' access='ROLE_REMOTE' />
    <http-basic />
  </http>

我不明白的是: 已经为 http 标签配置了 URL 模式“/restful/**”,这意味着所有匹配此模式的请求都将由该 http 标签内的过滤器链处理。但是为什么它给拦截URL标签一个“匹配所有”模式:“/**”?

它不是重复的吗?

另外,如果真的要给出另一种模式,“/restful/**”不是更好吗?原因“/**”将匹配与“/restful/**”不匹配的URL,因此不会被此过滤器链处理。

【问题讨论】:

    标签: spring-security


    【解决方案1】:
    1. 如果&lt;http&gt; 中没有&lt;intercept-url&gt; 标记,此声明基本上表示任何人都可以访问/restful/** 路径下的任何资源。这里的&lt;intercept-url&gt; 将访问权限限制为分配了ROLE_REMOTE 角色的用户,这是完全不同的。

    2. &lt;intercept-url&gt; 模式与封闭的&lt;http&gt; 元素模式相关,因此此声明将拦截/restful/** 路径之外的任何内容。

    典型的模式是,您将有一个&lt;http&gt; 元素和几个&lt;intercept-url&gt; 元素定位不同的URL 模式。当您希望身份验证和访问控制以不同的方式运行时,例如会话管理或 REST API 端点的身份验证失败处理程序,其他 &lt;http&gt; 元素可能很有用。

    【讨论】:

    • 谢谢斯皮夫。所以 中的 url 模式用于身份验证,而 中的 url 模式相对于 http 中的 url 模式并且用于授权。我说的对吗?
    • url-pattern 只是一个根上下文,将应用此配置;此元素可以配置身份验证以外的关注点。你应该看看 XSD 看看还有什么可以配置的。 主要用于授权,但它也可以用于为给定的 URL 模式授权一个安全通道。
    猜你喜欢
    • 2020-07-10
    • 2016-08-24
    • 2020-01-14
    • 2016-04-26
    • 2013-03-12
    • 2016-06-07
    • 2015-09-06
    • 1970-01-01
    • 2016-10-02
    相关资源
    最近更新 更多