安全顶部

我刚宣布了新的学习Spring Security课程,包括全部材料专注于春季安全的新OAuth2堆栈5:

>>查看课程

1.概述

Spring Security提供了几种机制来将请求模式配置为不安全的或允许所有访问。根据这些机制的不同——这可能意味着在那条路径上根本不运行安全过滤器链,或者运行过滤器链并允许访问。

进一步阅读:

Spring Security - 角色和特权

如何映射Spring Security应用程序的角色和权限:设置,身份验证和注册过程。

2。访问=“pilitall”

建立A.< intercept-url >元素访问=“pilitall”将配置授权,以便所有请求都是允许在那条特定的道路上:

<拦截 -  url pattern =“/ login *”Access =“PerpletAll”/>

或者,通过Java配置:

http.authorizeRequests()。反atchers(“/ login *”)。princall();

这是实现的不禁用安全筛选器- 这些仍然运行,因此仍将提供任何春季安全相关功能。

3.过滤器= "没有"

这是spring 3.1之前的特性在Spring 3.1中弃用并更换。

过滤器属性在特定的请求路径上完全禁用Spring Security filters链:

<拦截 -  url pattern =“/ login *”筛选器=“无”/>

当请求的处理需要一些春天安全性时,这可能会导致问题。

由于这是一个弃用的功能Spring版本,较新的3.0,使用Spring 3.1使用它会导致启动时的运行时异常:

严重:上下文初始化失败org.springframework.beans.factory.parsing.beandefinitionParsingException:配置问题:不再支持使用“筛选器=”无“”。请为要排除的模式定义一个单独的元素,并使用属性“security ='none”。违规资源:o.s.b.f.p.failfastproblemreporter.error(failfastproblemreporter.java:68)

4.安全=“无”

正如我们在上面的错误消息中看到的那样,Spring 3.1替换过滤器= "没有"有一个新的表达 -安全=“无”

范围也发生了变化 - 这已不再指定< intercept-url >元素级别。相反,Spring 3.1允许多个元素要定义 - 每个都有自己的安全滤波链配置。因此,新的安全属性现在属于元素级别。

在实践中,这看起来像:

或使用Java配置:

web.igningors()。反atchers(“/资源/ **”);

而不是旧的:

<拦截 -  URL模式=“/资源/ **”筛选器=“无”/>

类似于过滤器= "没有",这也将完全禁用该请求路径的安全滤波器链 - 因此在应用程序中处理请求时,Spring Security功能将无法使用。

这对于上面的例子来说不是问题,它们主要处理提供静态资源-没有实际处理的地方。但是,如果以某种方式以编程方式处理请求,那么安全功能,如需要频道,访问当前用户或调用安全方法将无法使用。

出于同样的原因,没有必要在已配置的元素安全=“无”因为不安全的请求路径,并且只会忽略属性。

或者,Access ='is_authenticated_ananonymounds'可用于允许匿名访问。

5.警告安全=“无”

使用多个时元素,有些配置安全=“无”,请记住,定义这些元素的顺序是重要的。我们想要具体首先是路径,最后遵循普遍模式。

还要注意,如果是元素没有指定模式然后默认情况下,将该元素映射到通用匹配模式 - “/ **”,此元素需要持续。如果元素的顺序不正确,则安全滤波器链的创建将失败

一个通用匹配模式('/**')在过滤器链中的其他模式之前定义,导致它们被忽略。请检查您的命名空间或FilterChainProxy bean配置在o.s.s.c.h.DefaultFilterChainValidator.checkPathOrder

六,结论

本文讨论了允许访问春季安全路径的选项 - 专注于之间的差异filters =“无”,安全=“无”和Access =“perplate”

像往常一样,可以使用示例在GitHub

安全底部

我刚宣布了新的学习Spring Security课程,包括全部材料专注于春季安全的新OAuth2堆栈5:

>>查看课程
5.评论
最古老的
最新的
内联反馈
查看所有评论
本文评论关闭!