xyz20003

www.mossle.com
随笔 - 34, 文章 - 0, 评论 - 124, 引用 - 0
数据加载中……

Spring Security手册更新——添加“管理会话”和对namespace,database的整理

新增的部分有,第八章“管理会话”,附录D,E分别整理了命名空间中的元素和属性,以及数据库表结构。

10. 管理会话
10.1. 添加监听器
10.2. 添加过滤器
10.3. 控制策略
10.3.1. 后登陆的将先登录的踢出系统
10.3.2. 后面的用户禁止登陆
D. 命名空间
D.1. http
D.2. authentication-provider
D.3. ldap-server
D.4. global-method-security
E. 数据库表结构
E.1. User
E.2. Group
E.3. RememberMe
E.4. ACL

posted @ 2009-06-22 10:02 临远 阅读(1083) | 评论 (3)编辑 收藏

图解Spring Security默认使用的过滤器

第 9 章 图解过滤器

auto-config='true'时的过滤器列表

图 9.1. auto-config='true'时的过滤器列表


9.1. HttpSessionContextIntegrationFilter

org.springframework.security.context.HttpSessionContextIntegrationFilter

图 9.2. org.springframework.security.context.HttpSessionContextIntegrationFilter


位于过滤器顶端,第一个起作用的过滤器。

用 途一,在执行其他过滤器之前,率先判断用户的session中是否已经存在一个SecurityContext了。如果存在,就把 SecurityContext拿出来,放到SecurityContextHolder中,供Spring Security的其他部分使用。如果不存在,就创建一个SecurityContext出来,还是放到SecurityContextHolder中, 供Spring Security的其他部分使用。

用途二,在所有过滤器执行完毕后,清空SecurityContextHolder,因为SecurityContextHolder是基于ThreadLocal的,如果在操作完成后清空ThreadLocal,会受到服务器的线程池机制的影响。

9.2. LogoutFilter

org.springframework.security.ui.logout.LogoutFilter

图 9.3. org.springframework.security.ui.logout.LogoutFilter


只处理注销请求,默认为/j_spring_security_logout。

用途是在用户发送注销请求时,销毁用户session,清空SecurityContextHolder,然后重定向到注销成功页面。可以与rememberMe之类的机制结合,在注销的同时清空用户cookie。

9.3. AuthenticationProcessingFilter

org.springframework.security.ui.webapp.AuthenticationProcessingFilter

图 9.4. org.springframework.security.ui.webapp.AuthenticationProcessingFilter


处理form登陆的过滤器,与form登陆有关的所有操作都是在此进行的。

默认情况下只处理/j_spring_security_check请求,这个请求应该是用户使用form登陆后的提交地址,form所需的其他参数可以参考:???

此过滤器执行的基本操作时,通过用户名和密码判断用户是否有效,如果登录成功就跳转到成功页面(可能是登陆之前访问的受保护页面,也可能是默认的成功页面),如果登录失败,就跳转到失败页面。

9.4. DefaultLoginPageGeneratingFilter

org.springframework.security.ui.webapp.DefaultLoginPageGeneratingFilter

图 9.5. org.springframework.security.ui.webapp.DefaultLoginPageGeneratingFilter


此过滤器用来生成一个默认的登录页面,默认的访问地址为/spring_security_login,这个默认的登录页面虽然支持用户输入用户名,密码,也支持rememberMe功能,但是因为太难看了,只能是在演示时做个样子,不可能直接用在实际项目中。

如果想自定义登陆页面,可以参考:第 4 章 自定义登陆页面

9.5. BasicProcessingFilter

org.springframework.security.ui.basicauth.BasicProcessingFilter

图 9.6. org.springframework.security.ui.basicauth.BasicProcessingFilter


此过滤器用于进行basic验证,功能与AuthenticationProcessingFilter类似,只是验证的方式不同。有关basic验证的详细情况,我们会在后面的章节中详细介绍。

有关basic验证的详细信息,可以参考:第 12 章 basic认证

9.6. SecurityContextHolderAwareRequestFilter

org.springframework.security.wrapper.SecurityContextHolderAwareRequestFilter

图 9.7. org.springframework.security.wrapper.SecurityContextHolderAwareRequestFilter


此过滤器用来包装客户的请求。目的是在原始请求的基础上,为后续程序提供一些额外的数据。比如getRemoteUser()时直接返回当前登陆的用户名之类的。

9.7. RememberMeProcessingFilter

org.springframework.security.ui.rememberme.RememberMeProcessingFilter

图 9.8. org.springframework.security.ui.rememberme.RememberMeProcessingFilter


此过滤器实现RememberMe功能,当用户cookie中存在rememberMe的标记,此过滤器会根据标记自动实现用户登陆,并创建SecurityContext,授予对应的权限。

有关rememberMe功能的详细信息,可以参考:第 14 章 自动登录

9.8. AnonymousProcessingFilter

org.springframework.security.providers.anonymous.AnonymousProcessingFilter

图 9.9. org.springframework.security.providers.anonymous.AnonymousProcessingFilter


为了保证操作统一性,当用户没有登陆时,默认为用户分配匿名用户的权限。

有关匿名登录功能的详细信息,可以参考:第 15 章 匿名登录

9.9. ExceptionTranslationFilter

org.springframework.security.ui.ExceptionTranslationFilter

图 9.10. org.springframework.security.ui.ExceptionTranslationFilter


此过滤器的作用是处理中FilterSecurityInterceptor抛出的异常,然后将请求重定向到对应页面,或返回对应的响应错误代码。

9.10. SessionFixationProtectionFilter

org.springframework.security.ui.SessionFixationProtectionFilter

图 9.11. org.springframework.security.ui.SessionFixationProtectionFilter


防御会话伪造攻击。有关防御会话伪造的详细信息,可以参考:第 16 章 防御会话伪造

9.11. FilterSecurityInterceptor

org.springframework.security.intercept.web.FilterSecurityInterceptor

图 9.12. org.springframework.security.intercept.web.FilterSecurityInterceptor


用户的权限控制都包含在这个过滤器中。

功能一:如果用户尚未登陆,则抛出AuthenticationCredentialsNotFoundException“尚未认证异常”。

功能二:如果用户已登录,但是没有访问当前资源的权限,则抛出AccessDeniedException“拒绝访问异常”。

功能三:如果用户已登录,也具有访问当前资源的权限,则放行。

至此,我们完全展示了默认情况下Spring Security中使用到的过滤器,以及每个过滤器的应用场景和显示功能,下面我们会对这些过滤器的配置和用法进行逐一介绍。

posted @ 2009-06-15 10:39 临远 阅读(3580) | 评论 (6)编辑 收藏

Spring Security-2.0导航-基础篇,又添两章

目前我们在基础篇中已经编写了六章,基本上可以带新手从头开始使用Spring Security了,稍稍还带了一些定制的功能,有深有浅,等到下次整理时再考虑是否细分章节,深挖内容。

I. 基础篇
1. 一个简单的HelloWorld
1.1. 配置过滤器
1.2. 使用命名空间
1.3. 完善整个项目
1.4. 运行示例
2. 使用数据库管理用户权限
2.1. 修改配置文件
2.2. 数据库表结构
3. 自定义数据库表结构
3.1. 自定义表结构
3.2. 初始化数据
3.3. 获得自定义用户权限信息
3.3.1. 处理用户登陆
3.3.2. 检验用户权限
4. 自定义登陆页面
4.1. 实现自定义登陆页面
4.2. 修改配置文件
4.3. 登陆页面中的参数配置
4.4. 测试一下
5. 使用数据库管理资源
5.1. 数据库表结构
5.2. 初始化数据
5.3. 实现从数据库中读取资源信息
5.3.1. 需要何种数据格式
5.3.2. 替换原有功能的切入点
6. 控制用户信息
6.1. MD5加密
6.2. 盐值加密
6.3. 用户信息缓存
6.4. 获取当前用户信息



教程在线浏览地址:http://www.family168.com/oa/springsecurity/html/index.html

 

基础篇中的六部分内容。

 

第一部分,怎么用最小配置完成一个Spring Security项目。

第二部分,如果使用数据库保存用户权限信息,该怎么配置。

第三部分,如果不想用默认的数据库结构,怎么适配已有的表结构。

第四部分,大家肯定嫌默认的登录页面太丑,这个时候怎么用自己制作的登录页面替换默认页面。

第五部分,把资源信息也写到数据库中。

第六部分,有关用户的一些操作,诸如用户加密,用户缓存,获取当前用户等等。

 

对于还在探索尝试阶段中的我们,给予反馈是对我们的最大帮助了。如果没有反馈意见,就很难有机会把这些写的更好。THx.

posted @ 2009-06-10 10:34 临远 阅读(2046) | 评论 (6)编辑 收藏

Spring Security-2.0入门教程

欢迎阅读咱们写的Spring Security教程,咱们既不想写一个简单的入门教程,也不想翻译已有的国外教程。咱们这个教程就是建立在咱们自己做的OA的基础上,一点一滴总结出来的经验和教训。

首先必须一提的是,Spring Security出身名门,它是Spring的一个子项目http://static.springsource.org/spring-security/site/index.html。它之前有个很响亮的名字Acegi。这个原本坐落在sf.net上的项目,后来终于因为跟spring的紧密连接,在2.0时成为了Spring的一个子项目。

即 使是在开源泛滥的Java领域,统一权限管理框架依然是稀缺的,这也是为什么Spring Security(Acegi)已出现就受到热捧的原因,据俺 们所知,直到现在也只看到apache社区的jsecurity在做同样的事情。(据小道消息,jsecurity还很稚嫩。)

Spring Security(Acegi)支持一大堆的权限功能,然后它又和Spring这个当今超流行的框架整合的很紧密,所以我们选择它。实际上自从Acegi时代它就很有名了。

目前我们编写了四章用于Spring Security入门的文档,基本上可以带新手从头开始使用Spring Security了。

    1. 一个简单的HelloWorld
        1.1. 配置过滤器
        1.2. 使用命名空间
        1.3. 完善整个项目
        1.4. 运行示例
    2. 使用数据库保存权限信息
        2.1. 修改配置文件
        2.2. 数据库表结构
    3. 自定义数据库表结构
        3.1. 自定义表结构
        3.2. 初始化数据
        3.3. 配置Spring Security
            3.3.1. 处理用户登陆
            3.3.2. 检验用户权限
    4. 自定义登陆页面
        4.1. 实现自定义登陆页面
        4.2. 修改配置文件
        4.3. 登陆页面中的参数配置
        4.4. 测试一下

教程在线浏览地址:http://www.family168.com/oa/springsecurity/html/index.html

posted @ 2009-06-04 18:12 临远 阅读(3955) | 评论 (8)编辑 收藏

仅列出标题
共4页: 上一页 1 2 3 4