spring security 下web应用安全的关键Filter:FilterSecurityInterceptor
2015-10-31 23:43
507 查看
尽管spring security提供了许多filter(参考《spring security 标准Filter及其在filter chain的顺序》)处理不同事情,但在web应用的安全防护上核心filter有如下图所示四个核心的filter,而FilterSecurityInterceptor负责处理HTTP资源的安全性。整个过程需要依赖AuthenticationManager、AccessDecisionManager和FilterInvocationSecurityMetadataSource。
AuthenticationManager:认证管理器,实现用户认证的入口
AccessDecisionManager:访问决策器,决定某个用户具有的角色,是否有足够的权限去访问某个资源
FilterInvocationSecurityMetadataSource:资源源数据定义,即定义某一资源可以被哪些角色访问
他们的关系在spring security配置文件中的配置方式如下代码所示。
通过源码分析我们知道这三个类都是FilterSecurityInterceptor的属性,而且三个都是定义的接口。当然FilterInvocationSecurityMetadataSource之外另外两个属性在其父类AbstractSecurityInterceptor中。
上面配置方式中属性securityMetadataSource是使用<security:filter-security-metadata-source>
Namespace特性来进行的实现,它的弊端是资源和角色的关系固化在配置文件中,而要实现在数据库中灵活配置目的,我们需要自己实现一个FilterInvocationSecurityMetadataSource实现类。从中获取资源角色关系即可。
尽管spring security提供了许多filter(参考《spring security 标准Filter及其在filter chain的顺序》)处理不同事情,但在web应用的安全防护上核心filter有如下图所示四个核心的filter,而FilterSecurityInterceptor负责处理HTTP资源的安全性。整个过程需要依赖AuthenticationManager、AccessDecisionManager和FilterInvocationSecurityMetadataSource。
AuthenticationManager:认证管理器,实现用户认证的入口
AccessDecisionManager:访问决策器,决定某个用户具有的角色,是否有足够的权限去访问某个资源
FilterInvocationSecurityMetadataSource:资源源数据定义,即定义某一资源可以被哪些角色访问
他们的关系在spring security配置文件中的配置方式如下代码所示。
通过源码分析我们知道这三个类都是FilterSecurityInterceptor的属性,而且三个都是定义的接口。当然FilterInvocationSecurityMetadataSource之外另外两个属性在其父类AbstractSecurityInterceptor中。
上面配置方式中属性securityMetadataSource是使用<security:filter-security-metadata-source>
Namespace特性来进行的实现,它的弊端是资源和角色的关系固化在配置文件中,而要实现在数据库中灵活配置目的,我们需要自己实现一个FilterInvocationSecurityMetadataSource实现类。从中获取资源角色关系即可。
AuthenticationManager:认证管理器,实现用户认证的入口
AccessDecisionManager:访问决策器,决定某个用户具有的角色,是否有足够的权限去访问某个资源
FilterInvocationSecurityMetadataSource:资源源数据定义,即定义某一资源可以被哪些角色访问
他们的关系在spring security配置文件中的配置方式如下代码所示。
<bean id="filterSecurityInterceptor"
class="org.springframework.security.web.access.intercept.FilterSecurityInterceptor">
<property name="authenticationManager" ref="authenticationManager"/>
<property name="accessDecisionManager" ref="accessDecisionManager"/>
<property name="securityMetadataSource">
<security:filter-security-metadata-source>
<security:intercept-url pattern="/secure/super/**" access="ROLE_WE_DONT_HAVE"/>
<security:intercept-url pattern="/secure/**" access="ROLE_SUPERVISOR,ROLE_TELLER"/>
</security:filter-security-metadata-source>
</property>
</bean>
通过源码分析我们知道这三个类都是FilterSecurityInterceptor的属性,而且三个都是定义的接口。当然FilterInvocationSecurityMetadataSource之外另外两个属性在其父类AbstractSecurityInterceptor中。
上面配置方式中属性securityMetadataSource是使用<security:filter-security-metadata-source>
Namespace特性来进行的实现,它的弊端是资源和角色的关系固化在配置文件中,而要实现在数据库中灵活配置目的,我们需要自己实现一个FilterInvocationSecurityMetadataSource实现类。从中获取资源角色关系即可。
尽管spring security提供了许多filter(参考《spring security 标准Filter及其在filter chain的顺序》)处理不同事情,但在web应用的安全防护上核心filter有如下图所示四个核心的filter,而FilterSecurityInterceptor负责处理HTTP资源的安全性。整个过程需要依赖AuthenticationManager、AccessDecisionManager和FilterInvocationSecurityMetadataSource。
AuthenticationManager:认证管理器,实现用户认证的入口
AccessDecisionManager:访问决策器,决定某个用户具有的角色,是否有足够的权限去访问某个资源
FilterInvocationSecurityMetadataSource:资源源数据定义,即定义某一资源可以被哪些角色访问
他们的关系在spring security配置文件中的配置方式如下代码所示。
<bean id="filterSecurityInterceptor"
class="org.springframework.security.web.access.intercept.FilterSecurityInterceptor">
<property name="authenticationManager" ref="authenticationManager"/>
<property name="accessDecisionManager" ref="accessDecisionManager"/>
<property name="securityMetadataSource">
<security:filter-security-metadata-source>
<security:intercept-url pattern="/secure/super/**" access="ROLE_WE_DONT_HAVE"/>
<security:intercept-url pattern="/secure/**" access="ROLE_SUPERVISOR,ROLE_TELLER"/>
</security:filter-security-metadata-source>
</property>
</bean>
通过源码分析我们知道这三个类都是FilterSecurityInterceptor的属性,而且三个都是定义的接口。当然FilterInvocationSecurityMetadataSource之外另外两个属性在其父类AbstractSecurityInterceptor中。
上面配置方式中属性securityMetadataSource是使用<security:filter-security-metadata-source>
Namespace特性来进行的实现,它的弊端是资源和角色的关系固化在配置文件中,而要实现在数据库中灵活配置目的,我们需要自己实现一个FilterInvocationSecurityMetadataSource实现类。从中获取资源角色关系即可。
相关文章推荐
- eclipse javaweb 项目异常
- spring security 标准Filter及其在filter chain的顺序
- Spring MVC 异常处理
- eclipse新建项目出现两个红点
- 冒泡排序(与改进)
- 疯狂JAVA讲义4.1--截取中文字符串
- java代理模式
- springMVCs下载
- Java基础知识点
- 1.java-注释,变量,标识符,关键字
- java 复习 - 浮点型变量
- Spring notes 1
- Java 三大框架SSH,自学先学哪个?
- java 发展简史
- Java各种字符串连接方法性能比较
- java 发展简史
- Java语言入门
- java 复习(一)整型变量使用
- ubuntu jdk1.8
- java学习应用:可视化窗口模拟基础聊天窗口(模仿QQ)