`
ch19880311
  • 浏览: 27277 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

关于Spring security

阅读更多
Spring Acegi Security是spring security的主要架构。
在这里需要理解4个filter的概念:AuthenticationProcessingFilter, HttpSessionContextIntegrationFilter, ExceptonTranslationFilter, FilterSecurityInterceptor.
这四个Filter被FilterChainProxy过滤器链管理,就像一个串把四个过滤器链接在一起,他实现了Filter接口,通过调用WebapplicationContextUtils类的getWebApplicationContext(ServletContext)来获取Spring上下文句柄,并通过getBean(beanName)方法获取Spring受管Bean的对象,即这里的target参数配置的Bean,并通过调用FilterChainProxy的init()方法来启动Spring Security过滤器链来进行各种身份认证和授权服务
web.xml可以用如下配置:
<filter>  
 <filter-name>filterChainProxy</filter-name>  
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>  
</filter>  
<filter-mapping>  
<filter-name>filterChainProxy<filter-name>  
<url-pattern>/*</url-pattern>  
</filter-mapping> 

如下为Spring-security.xml的示例代码:
<bean id="filterChainProxy"    class="org.springframework.security.util.FilterChainProxy">
<security:filter-chain-map path-type="ant">
<security:filter-chain pattern="/logout.jsp" filters="logoutFilter" />
<security:filter-chain pattern="/**" filters="httpSessionContextIntegrationFilter,authenticationProcessingFilter,FilterSecurityInterceptor" />
</security:filter-chain-map>
</bean>

下面逐个介绍每个过滤器:
AuthenticationProcessingFilter是认证过程过滤器,我们使用它来处理表单认证,当接受到与filterProcessesUrl所定义相同的请求时它开始工作:
<bean id="authenticationProcessingFilter" class="org.springframework.security.ui.webapp.AuthenticationProcessingFilter"> 
<property name="authenticationManager" ref="authenticationManager"></property> 
<property name="filterProcessesUrl" value="/login"></property> 
<property name="defaultTargetUrl" value="/error.jsp?error=1"></property> 
<property name="authenticationFailureUrl" value="/index.jsp?error_code=1"></property> 
</bean> 

AuthenticationProcessingFilter调用authenticationManager来完成用户身份的认证,主要是Authenticate方法来认证,它使用Authentication(只包含用户名密码)作为参数,认证成功返回一个完整的Authentication对象(包含用户权限信息GrantedAuthority数组对象),最后会将Authentication对象存入SecurityContext中。
httpSessionContextIntegrationFilter是集成过滤器,在产生的HTTP会话中保持SecurityContext。这意味着这种认证机制只需要认证一次,接下来将通过HTTP request传递至filter chain中的下一个filter。
示例如下:
<bean id="sif"
class="org.springframework.security.context.HttpSessionContextIntegrationFilter">
<property name="allowSessionCreation" value="false"/>
</bean>  

FilterSecurityInterceptor管理限制存取权限检查,并授权检查。它知道哪些资源是安全的,哪些角色访问它们。 FilterSecurityInterceptor使用AuthenticationManager和做工作的AccessDecisionManager
<bean id="filterSecurityInterceptor" class="org.springframework.security.intercept.web.FilterSecurityInterceptor"> 
<property name="accessDecisionManager" ref="accessDecisionManager"></property> 
<property name="authenticationManager" ref="authenticationManager"></property> 
<property name="objectDefinitionSource"> 
<value> 
CONVERT_URL_TO_LOWERCASE_BEFORE_COMPARISON 
PATTERN_TYPE_APACHE_ANT 
/login=ROLE_connect 
/success.jsp=ROLE_connect 
</value> 
</property> 
</bean> 

ExceptionTranslationFilter依赖FilterSecurityInterceptor,用来捕获FilterSecurityInterceptor抛出的例外
<bean id="exceptionTranslationFilter"    class="org.springframework.security.ui.ExceptionTranslationFilter">
<property name="authenticationEntryPoint" ref="authenticationEntryPoint"/>
<property name="accessDeniedHandler" ref="accessDeniedHandler"/>
</bean>            
<bean id="authenticationEntryPoint"     class="org.springframework.security.ui.preauth.PreAuthenticatedProcessingFilterEntryPoint">
</bean>
<bean id="accessDeniedHandler"  class="org.springframework.security.ui.AccessDeniedHandlerImpl">
<property name="errorPage" value="/logout.html"/>
</bean>
0
5
分享到:
评论

相关推荐

    关于SpringSecurity与OAuth的学习,含mysql与redis版本.zip

    在这个关于SpringSecurity与OAuth的学习资料中,包含了与MySQL和Redis集成的版本,这表明将涉及到数据库管理和缓存的使用。 首先,SpringSecurity是Spring框架的一个模块,它为应用程序提供了细粒度的安全控制,...

    精彩:Spring Security 演讲PPT

    在演讲结束后,演讲嘉宾张明星还预留了时间进行现场问答,解答了观众关于Spring Security的实际应用和技术细节等问题。 ### 总结 通过这次演讲,我们可以看出Spring Security 2.x不仅在功能上强大,而且在灵活性和...

    spring-security 官方文档 中文版

    - **4.3 更多信息**:提供了更多关于 Spring Security 的资料和支持渠道。 #### 五、总结 Spring Security 作为一款成熟的安全框架,不仅提供了丰富的功能,而且具有良好的扩展性和易用性。通过上述介绍,我们了解...

    Spring Security in Action

    Spring Security 实践指南 Spring Security 是一个基于 Java 的安全框架,旨在提供身份验证、授权和访问控制等功能。下面是 Spring Security 的主要知识点: 一、身份验证(Authentication) 身份验证是指对用户...

    狂神说SpringSecurity静态资源.rar

    "狂神说SpringSecurity静态资源.rar"很可能是狂神(一位知名的IT教育博主)分享的一系列关于SpringSecurity教程的资料,包含了模板(templates)和静态资源(static)两个部分。 在SpringSecurity中,静态资源的...

    SpringSecurity静态资源.rar

    以下是一些关于SpringSecurity处理静态资源的关键知识点: 1. **静态资源路径配置**:在Spring Security配置类中,可以通过`WebSecurityConfigurerAdapter`的子类来配置静态资源的访问权限。例如,可以使用`...

    Spring Security 资料合集

    Spring Security 是一个强大的安全框架,主要用于Java应用的安全管理,它为Web应用和企业级应用提供了全面的安全服务。这个框架能够处理认证、授权以及各种安全相关的功能,帮助开发者构建安全、可扩展的应用。以下...

    SpringSecurity.pdf

    Spring Security是一个功能强大、高度定制的安全框架,它专门用于为基于Spring的应用程序提供安全性解决方案。Spring Security架构的设计初衷是为了解决认证和授权的需求,确保应用程序的安全性。它提供了全面的安全...

    Spring Security 学习总结1_3

    "springsecurity-namespace"可能指的是Spring Security的XML命名空间配置。在Spring Security的早期版本中,使用XML配置是最常见的实践。例如,你可能会看到以下片段: ```xml **" access="hasRole('ROLE_ADMIN')...

    springsecurity学习笔记

    在"springsecurity学习笔记"中,你可能会涉及以下主题: - Spring Security的基本配置,包括web安全配置和全局安全配置。 - 如何自定义认证和授权流程,比如实现自定义的AuthenticationProvider和...

    spring security 完整项目实例

    Spring Security 是一个强大的安全框架,用于为Java应用提供身份验证和授权服务。在这个完整的项目实例中,我们将深入探讨Spring Security的核心概念以及如何将其应用于实际的Web应用程序开发。 首先,我们从用户、...

    spring security 3.1 PDF 英文版,源代码.7z

    标题中的“spring security 3.1 PDF 英文版,源代码.7z”指的是一个关于Spring Security 3.1的PDF文档,包含了该框架的详细文档,并且附带了源代码。这为开发者提供了一个深入学习和理解Spring Security 3.1的机会,...

    Spring Cloud Gateway 整合 Spring Security 统一登录认证鉴权

    在压缩包文件`spring_gateway_security_webflux`中,可能包含了示例代码或配置文件,用于演示如何在Spring Cloud Gateway中集成Spring Security,实现统一登录认证鉴权。这些资源可以帮助开发者更快地理解和实践上述...

    SpringSecurity学习总结源代码

    SpringSecurity是Java开发中用于构建安全Web应用的框架,它提供了强大的身份验证、授权和访问控制功能。在本文中,我们将深入探讨SpringSecurity的核心概念、关键组件以及如何配置和使用这个框架。 首先,Spring...

    spring spring security2.5 jar

    Spring Security是Spring生态体系中的一个核心组件,主要负责应用程序的安全性,包括认证和授权。它为Web应用提供了全面的保护,防止未经授权的访问和操作。在版本2.5时,Spring Security已经是一个成熟且功能丰富的...

    SpringBoot+SpringSecurity处理Ajax登录请求问题(推荐)

    SpringBoot+SpringSecurity处理Ajax登录请求问题 SpringBoot+SpringSecurity处理Ajax登录请求问题是SpringBoot开发中的一個常见问题,本文将详细介绍如何使用SpringBoot+SpringSecurity处理Ajax登录请求问题。 ...

Global site tag (gtag.js) - Google Analytics