Spring Security的OAuth插件,同时提供了OAuth客户端(consumer)和服务器端(provider)的实现,支持OAuth1(a)和OAuth2。
Spring Security,这是一种基于Spring AOP和Servlet过滤器[7]的安全框架。它提供全面的安全性解决方案,同时在Web请求级和方法调用级处理身份确认和授权。在Spring Framework基础上,Spring Security充分利用了依赖注入(DI,Dependency Injection)和面向切面技术。 Spring Security原身是Spring Acegi,在Spring Acegi 2.0之后改名为Spring Security 2.0。我们现在讲解的是Spring Security 3.0,相对于2.0而言改动比较大,配置也更加简单了。
Spring Security是基于Spring的的权限认证框架,实现了Spring Security基于schema的配置方式。 使用http配置 地址资源的访问控制. 实现UserDetailsService接口,来指定用户和权限 与Acegi的比较 ,基于命名空间的配置更加简洁,可维护性更强; 基于命名空间的配置,我们无需再担心由于过滤器链的顺序而导致的错误 过滤器顺序在使用命名空间的时候是被严格执行的。它们在初始化的时候就预先被排好序。不仅如此,Spring Security规定,你不能替换那些<http>元素自己使用而创建出的过滤器,比如HttpSessionContextIntegrationFilter, ExceptionTranslationFilter 或 FilterSecurityInterceptor。
根据公司项目的开发要求和集合spring security3.0功能,公司将通过数据库进行对用户身份验证和授权,系统将建立5个基础表进行对权利的管理。
ConfigAttributeDefinition和ConfigAttributeEditorConfigAttributeDefinition的对象中保存有了一组配置属性(ConfigAttributes),配置信息都以集合的方式存储在对象中。作用:信息的载体源码:
在认识SpringSecurity之前,所有的权限验证逻辑都混杂在业务逻辑中,用户的每个操作以前可能都需要对用户是否有进行该项操作的权限进行判断,来达到认证授权的目的。类似这样的权限验证逻辑代码被分散在系统的许多地方,难以维护。AOP(Aspect Oriented Programming)和SpringSecurity为我们的应用程序很好的解决了此类问题,正如系统日志,事务管理等这些系统级的服务一样,我们应该将它作为系统一个单独的“切面”进行管理,以达到业务逻辑与系统级的服务真正分离的目的。
本文档内容仅仅作为公司权限管理资料用,对于企业来说,权限管理将是系统中的非常重要的一个模块,权限的设计也是参考相关资料进行整理和补充。系统将通过数据库进行管理用户权限。
前一篇文章里介绍了Spring Security的一些基础知识,相信你对Spring Security的工作流程已经有了一定的了解,如果你同时在读源代码,那你应该可以认识的更深刻。在这篇文章里,我们将对SpringSecurity进行一些自定义的扩展,比如自定义实现UserDetailsService,保护业务方法以及如何对用户权限等信息进行动态的配置管理。
Spring Security(以下简称为SS)其前身是大名鼎鼎的ACEGI,后来正式合并至Spring框架,成为Spring框架中一员,由于它支持安全策略比较多,并且集成容易,现在也越来越多的系统采用它来进行安全管理。本系统中也采用它的基于角色的管理策略,以实现系统灵活的安全管理要求。
Spring Security 的前身是 Acegi Security ,是 Spring 项目组中用来提供安全认证服务的框架。
Spring Security的OAuth插件,同时提供了OAuth客户端(consumer)和服务器端(provider)的实现,支持OAuth1(a)和OAuth2。
Spring Security 4.0.4 发布了,这是一个维护版本,主要是 bug 修复,详细列表请看 ChangeLog。
Spring Security虽然比JAAS进步很大,但还是先天不足,达不到ASP.NET中的认证和授权的方便快捷。这里演示登录、注销、记住我的常规功能,认证上自定义提供程序避免对数据库的依赖,授权上自定义提供程序消除从缓存加载角色信息造成的角色变更无效副作用。
统一权限管理框架依然是稀缺的,这也是为什么Spring Security(Acegi)已出现就受到热捧的原因,据俺们所知,直到现在也只看到apache社区的jsecurity在做同样的事情。(据小道消息,jsecurity还很稚嫩。) Spring Security(Acegi)支持一大堆的权限功能,然后它又和Spring这个当今超流行的框架整合的很紧密,所以我们选择它。实际上自从Acegi时代它就很有名了。
Spring Security 为基于J2EE 企业应用软件提供了全面安全服务。特别是使用领先的 J2EE 解决方案-spring 框架开发的企业软件项目。如果你没有使用Spring 开发企业软件, 我们热情的推荐你仔细研究一下。熟悉Spring-尤其是依赖注入原理-将帮助你更快的掌握 Spring Security。 人们使用Spring Security 有很多种原因, 不过通常吸引他们的是在J2EE Servlet 规范 或EJB 规范中找不到典型企业应用场景的解决方案。提到这些规范,特别要指出的是它们 不能在WAR 或EAR 级别进行移植。这样,如果你更换服务器环境, 就要,在新的目标环 境进行大量的工作,对你的应用系统进行重新配置安全。使用Spring Security 解决了这 些问题,也为你提供了很多有用的,可定制的其他安全特性。
Spring Security为基于J2EE企业应用软件提供了全面安全服务。 特别是使用领先的J2EE解决方案-spring框架开发的企业软件项目。 如果你没有使用Spring开发企业软件,我们热情的推荐你仔细研究一下。 熟悉Spring-尤其是依赖注入原理-将帮助你更快的掌握Spring Security。<br> 人们使用Spring Security有很多种原因, 不过通常吸引他们的是在J2EE Servlet规范或EJB规范中找不到典型企业应用场景的解决方案。 提到这些规范,特别要指出的是它们不能在WAR或EAR级别进行移植。这样,如果你更换服务器环境, 就要,在新的目标环境进行大量的工作,对你的应用系统进行重新配置安全。 使用Spring Security解决了这些问题,也为你提供了很多有用的,可定制的其他安全特性。
Spring Security为基于J2EE的企业应用软件提供了一套全面的安全解决方案。正如你在本手册中看到的那样,我们尝试为您提供一套好用,高可配置的安全系统。 安全问题是一个不断变化的目标,更重要的是寻求一种全面的,系统化的解决方案。 在安全领域我们建议你采取“分层安全”,这样让每一层确保本身尽可能的安全,并为其他层提供额外的安全保障。 每层自身越是“紧密”,你的程序就会越鲁棒越安全。 在底层,你需要处理传输安全和系统认证,减少“中间人攻击”(man-in-the-middle attacks)。 接下来,我们通常会使用防火墙,结合VPN或IP安全来确保只有获得授权的系统才能尝试连接。 在企业环境中,你可能会部署一个DMZ(demilitarized zone,隔离区),将面向公众的服务器与后端数据库,应用服务器隔离开。 在以非授权用户运行进程和文件系统安全最大化上,你的操作系统也将扮演一个关键的角色。 操作系统通常配置了自己的防火墙。 然后你要防止针对系统的拒绝服务和暴力攻击。 入侵检测系统在检测和应对攻击的时候尤其有用。这些系统可以实时屏蔽恶意TCP/IP地址。 在更高层上,你需要配置Java虚拟机,将授予不同java类型权限最小化,然后,你的应用程序要添加针对自身特定问题域的安全配。Spring Security使后者 - 应用程序安全变得更容易。
Spring Security为基于J2EE的企业应用软件提供了一套全面的安全解决方案。正如你在本手册中看到的那样,我们尝试为您提供一套好用,高可配置的安全系统。安全问题是一个不断变化的目标,更重要的是寻求一种全面的,系统化的解决方案。 在安全领域我们建议你采取“分层安全”,这样让每一层确保本身尽可能的安全,并为其他层提供额外的安全保障。 每层自身越是“紧密”,你的程序就会越鲁棒越安全。 在底层,你需要处理传输安全和系统认证,减少“中间人攻击”(man-in-the-middle attacks)。 接下来,我们通常会使用防火墙,结合VPN或IP安全来确保只有获得授权的系统才能尝试连接。 在企业环境中,你可能会部署一个DMZ(demilitarized zone,隔离区),将面向公众的服务器与后端数据库,应用服务器隔离开。 在以非授权用户运行进程和文件系统安全最大化上,你的操作系统也将扮演一个关键的角色。 操作系统通常配置了自己的防火墙。 然后你要防止针对系统的拒绝服务和暴力攻击。 入侵检测系统在检测和应对攻击的时候尤其有用。这些系统可以实时屏蔽恶意TCP/IP地址。 在更高层上,你需要配置Java虚拟机,将授予不同java类型权限最小化,然后,你的应用程序要添加针对自身特定问题域的安全配。Spring Security使后者 - 应用程序安全变得更容易。
spring 3.0 MVC 初步4-集成spring security 3.1
即使是在开源泛滥的Java领域,统一权限管理框架依然是稀缺的,这也是为什么Spring Security(Acegi)已出现就受到热捧的原因,据俺们所知,直到现在也只看到apache社区的jsecurity在做同样的事情。(据小道消息,jsecurity还很稚嫩。) Spring Security(Acegi)支持一大堆的权限功能,然后它又和Spring这个当今超流行的框架整合的很紧密,所以我们选择它。实际上自从Acegi时代它就很有名了。