根据公司项目的开发要求和集合spring security3.0功能,公司将通过数据库进行对用户身份验证和授权,系统将建立5个基础表进行对权利的管理。
Spring Security3配置说明:最近在学习Spring Security3,感觉功能很强大。但是网上资料不多,学习起来还是有点问题,本着我为人人,人人为我的精神,今天也贡献点资源,可能不深入,文档不够好,请大家多多原谅。
在认识SpringSecurity之前,所有的权限验证逻辑都混杂在业务逻辑中,用户的每个操作以前可能都需要对用户是否有进行该项操作的权限进行判断,来达到认证授权的目的。类似这样的权限验证逻辑代码被分散在系统的许多地方,难以维护。AOP(Aspect Oriented Programming)和SpringSecurity为我们的应用程序很好的解决了此类问题,正如系统日志,事务管理等这些系统级的服务一样,我们应该将它作为系统一个单独的“切面”进行管理,以达到业务逻辑与系统级的服务真正分离的目的。
Spring Security 安全框架的使用例子是留言板应用,打包为board.rar实例:消息留言板应用开发以spring MVC 为web框架、spring Security为安全框架的应用首先创建目录结构。
一种是全部利用配置文件,将用户、权限、资源(url)硬编码在xml文件中。 二种是用户和权限用数据库存储,而资源(url)和权限的对应采用硬编码配置。 三种是细分角色和权限,并将用户、角色、权限和资源均采用数据库存储,并且自定义过滤器,代替原有的FilterSecurityInterceptor过滤器,并分别实现AccessDecisionManager、 InvocationSecurityMetadataSourceService和UserDetailsService,并在配置文件中进行相应配置。
Spring Security是基于Spring的的权限认证框架,实现了Spring Security基于schema的配置方式。 使用http配置 地址资源的访问控制. 实现UserDetailsService接口,来指定用户和权限 与Acegi的比较 ,基于命名空间的配置更加简洁,可维护性更强; 基于命名空间的配置,我们无需再担心由于过滤器链的顺序而导致的错误 过滤器顺序在使用命名空间的时候是被严格执行的。它们在初始化的时候就预先被排好序。不仅如此,Spring Security规定,你不能替换那些<http>元素自己使用而创建出的过滤器,比如HttpSessionContextIntegrationFilter, ExceptionTranslationFilter 或 FilterSecurityInterceptor。
Spring Security3的使用方法有4种: 一种是全部利用配置文件,将用户、权限、资源(url)硬编码在xml文件中。 二种是用户和权限用数据库存储,而资源(url)和权限的对应采用硬编码配置。 三种是细分角色和权限,并将用户、角色、权限和资源均采用数据库存储,并且自定义过滤器,代替原有的FilterSecurityInterceptor过滤器,并分别实现AccessDecisionManager、 InvocationSecurityMetadataSourceService和UserDetailsService,并在配置文件中进行相应配置。
Spring Security3的使用方法有4种: 一种是全部利用配置文件,将用户、权限、资源(url)硬编码在xml文件中。 二种是用户和权限用数据库存储,而资源(url)和权限的对应采用硬编码配置。 三种是细分角色和权限,并将用户、角色、权限和资源均采用数据库存储,并且自定义过滤器,代替原有的FilterSecurityInterceptor过滤器,并分别实现AccessDecisionManager、 InvocationSecurityMetadataSourceService和UserDetailsService,并在配置文件中进行相应配置。
本文档内容仅仅作为公司权限管理资料用,对于企业来说,权限管理将是系统中的非常重要的一个模块,权限的设计也是参考相关资料进行整理和补充。系统将通过数据库进行管理用户权限。
ConfigAttributeDefinition和ConfigAttributeEditorConfigAttributeDefinition的对象中保存有了一组配置属性(ConfigAttributes),配置信息都以集合的方式存储在对象中。作用:信息的载体源码:
Spring Security(以下简称为SS)其前身是大名鼎鼎的ACEGI,后来正式合并至Spring框架,成为Spring框架中一员,由于它支持安全策略比较多,并且集成容易,现在也越来越多的系统采用它来进行安全管理。本系统中也采用它的基于角色的管理策略,以实现系统灵活的安全管理要求。
Spring Security为基于J2EE企业应用软件提供了全面安全服务。 特别是使用领先的J2EE解决方案-spring框架开发的企业软件项目。 如果你没有使用Spring开发企业软件,我们热情的推荐你仔细研究一下。 熟悉Spring-尤其是依赖注入原理-将帮助你更快的掌握Spring Security。<br> 人们使用Spring Security有很多种原因, 不过通常吸引他们的是在J2EE Servlet规范或EJB规范中找不到典型企业应用场景的解决方案。 提到这些规范,特别要指出的是它们不能在WAR或EAR级别进行移植。这样,如果你更换服务器环境, 就要,在新的目标环境进行大量的工作,对你的应用系统进行重新配置安全。 使用Spring Security解决了这些问题,也为你提供了很多有用的,可定制的其他安全特性。
本指南的后面部分提供对框架结构和实现类的深入讨论,了解它们,对你进行复杂的定制是十分重要的。在这部分,我们将介绍Spring Security 3.0,简要介绍该项目的历史,然后看看如何开始在程序中使用框架。特别是,我们将看看命名控件配置提供了一个更加简单的方式,在使用传统的spring bean配置时,你不得不实现所有类。Spring Security为基于J2EE企业应用软件提供了全面安全服务。 特别是使用领先的J2EE解决方案-spring框架开发的企业软件项目。 如果你没有使用Spring开发企业软件,我们热情的推荐你仔细研究一下。 熟悉Spring-尤其是依赖注入原理-将帮助你更快的掌握Spring Security。人们使用Spring Security有很多种原因, 不过通常吸引他们的是在J2EE Servlet规范或EJB规范中找不到典型企业应用场景的解决方案。 提到这些规范,特别要指出的是它们不能在WAR或EAR级别进行移植。这样,如果你更换服务器环境, 就要,在新的目标环境进行大量的工作,对你的应用系统进行重新配置安全。 使用Spring Security解决了这些问题,也为你提供了很多有用的,可定制的其他安全特性。
该系统的安全管理方式是结合Spring Security 2.0实现的。
Spring框架和Acegi安全框架介绍:借助于Spring框架,开发者能够快速构建结构良好的WEB应用,但现有的Spring框架本身没有提供安全相关的解决方案。同样来自于OpenSource社区的Acegi安全框架为实现基于Spring框架的WEB应用的安全控制提供了一个很好的解决方案。Acegi本身就是利用Spring提供的IoC和AOP机制实现的一个安全框架,它将安全性服务作为J2EE平台中的系统级服务,以AOP Aspect形式发布。所以借助于Acegi安全框架,开发者能够在Spring使能应用中采用声明式方式实现安全控制。
Spring Security11个步骤为应用程序添加安全防护历史与现状自2003年出现的Spring扩展插件AcegiSecurity发展而来。目前最新版本为3.x,已成为Spring的一部分。为J2EE企业应用程序提供可靠的安全性服务。Authenticationvs.Authorization区分概念验证与授权验证这个用户是谁?用户身份可靠吗?授权某用户A是否可以访问资源R某用户A是否可以执行M操作某用户A是否可以对资源R执行M操作SS中的验证特点支持多种验证方式支持多种加密格式支持组件的扩展和替换可以本地化输出信息SS中的授权特点支持多种仲裁方式支持组件的扩展和替换支持对页面访问、方法访问、对象访问的授权。
Spring Security中可以使用Acegi-1.x时代的普通配置方式,也可以使用从2.0时代才出现的命名空间配置方式,实际上这两者实现的功能是完全一致的,只是新的命名空间配置方式可以把原来需要几百行的配置压缩成短短的几十行。我们的教程中都会使用命名空间的方式进行配置,凡事务求最简。
Spring Security为基于J2EE的企业应用软件提供了一套全面的安全解决方案。正如你在本手册中看到的那样,我们尝试为您提供一套好用,高可配置的安全系统。安全问题是一个不断变化的目标,更重要的是寻求一种全面的,系统化的解决方案。 在安全领域我们建议你采取“分层安全”,这样让每一层确保本身尽可能的安全,并为其他层提供额外的安全保障。 每层自身越是“紧密”,你的程序就会越鲁棒越安全。 在底层,你需要处理传输安全和系统认证,减少“中间人攻击”(man-in-the-middle attacks)。 接下来,我们通常会使用防火墙,结合VPN或IP安全来确保只有获得授权的系统才能尝试连接。 在企业环境中,你可能会部署一个DMZ(demilitarized zone,隔离区),将面向公众的服务器与后端数据库,应用服务器隔离开。 在以非授权用户运行进程和文件系统安全最大化上,你的操作系统也将扮演一个关键的角色。 操作系统通常配置了自己的防火墙。 然后你要防止针对系统的拒绝服务和暴力攻击。 入侵检测系统在检测和应对攻击的时候尤其有用。这些系统可以实时屏蔽恶意TCP/IP地址。 在更高层上,你需要配置Java虚拟机,将授予不同java类型权限最小化,然后,你的应用程序要添加针对自身特定问题域的安全配。Spring Security使后者 - 应用程序安全变得更容易。