码迷,mamicode.com
首页 > 编程语言 > 详细

【转载】JavaEE权限管理分析

时间:2014-07-22 23:06:35      阅读:433      评论:0      收藏:0      [点我收藏+]

标签:http   java   使用   os   数据   io   

JavaEE权限管理分析

一.背景

       在 Web 应用开发中,安全一直是非常重要的一个方面。安全虽然属于应用的非功能性需求,但是应该在应用开发的初期就考虑进来。如果在应用开发的后期才考虑安全的问题,就可能陷入一个两难的境地:一方面,应用存在严重的安全漏洞,无法满足用户的要求,并可能造成用户的隐私数据被攻击者窃取;另一方面,应用的基本架构已经确定,要修复安全漏洞,可能需要对系统的架构做出比较重大的调整,因而需要更多的开发时间,影响应用的发布进程。因此,从应用开发的第一天就应该把安全相关的因素考虑进来,并应用在整个应用的开发过程中。

二.权限管理需求

   1.权限管理应该拥有的功能

       (1)管理权限:可以灵活地管理角色、分配权限,并将角色赋予系统相关用户以及认证、授权。并为系统其他模块提供授权信息支持。

       (2)功能级权限管理:不同角色的用户访问相应权限的内容或数据。

       (3)数据级权限管理:对系统数据进行增、删、改、查必须在相应权限范围内.

   2.权限管理模块的期望

       (1)简单、易操作,满足系统权限需求,可以跟现有系统无缝整合

       (2)应对需求变更能力强

       (3)既能提供功能级权限又能提供数据级权限。

       (4)有相关界面,比如权限管理界面、角色管理界面,角色和权限关系维护界面,用户和角色关系维护界面。

三.主流权限管理中间件或者框架

   1.Spring security

   简介:

       前身是Acegi,Acegi成为Spring子项目后改名为Spring Security。Spring Security 为基于J2EE企业应用软件提供了全面安全服务。特别是使用领先的J2EE解决方案-Spring框架开发的企业软件项目。

   原理:

       利用filter和session机制,为当前用户认证并授权,将授权信息存放于session中,以便在系统中随时调用。

   主要功能点:

       (1)url访问控制,支持正则表达式匹配和通配符

       (2)资源权限可配(需要自行实现)

       (3)Md5加密和盐值加密

       (4)系统任意地方获取当前认证用户信息

       (5)管理session,保证同一用户不能同时在两个地方登录

       (6)基于cas (Center Authentication Service)的单点登录

       (7)支持无状态客户端的验证,比如HttpInvoker或者Web Service的认证

       (8)支持指定http和https

       (9)自动登录

       (10)防御session伪造

       (11)支持ldap获取用户信息

       (12)支持标签库

       (13)支持aop以及annotation方式实现对方法或bean使用权的认证

   优点:

       比较成熟(业界老大),提供了完整的权限控制框架,自由度较高,对功能级别的控制能力较强,便于管理,可以跟使用了spring框架的项目进行无缝集成,可扩展能力较强,支持各种认证方式,为以后的业务扩展有一定的帮助。

   缺点:

       比较笨重,对数据级别的权限控制能力较弱,配置信息较复杂,学习难度大。可以说是一个半成品,需要根据系统情况,对其功能进行完善。(可以实现很多很多强大的功能)

   2.Shiro

   简介:

       前身是J-security ,是 JAVA 世界中新近出现的权限框架,较之 JAAS 和 Spring Security,Shiro 在保持强大功能的同时,还在简单性和灵活性方面拥有巨大优势。提供了认证、授权、加密和会话管理功能,可为任何应用提供安全保障 - 从命令行应用、移动应用到大型网络及企业应用。

       Shiro为解决下列问题(我喜欢称它们为应用安全的四要素)提供了保护应用的API:

           认证 - 用户身份识别,常被称为用户“登录”;

           授权 - 访问控制;

           密码加密 - 保护或隐藏数据防止被偷窥;

           会话管理 - 每用户相关的时间敏感的状态。

   原理:

       Shiro对web系统的权限管理也类似于spring security,使用过滤器来创建上下文,认证、授权。

   主要特点:

       (1)易于理解的 Java Security API;

       (2)简单的身份认证(登录),支持多种数据源(LDAP,JDBC,Kerberos,ActiveDirectory 等);

       (3)对角色的简单的签权(访问控制),支持细粒度的签权;

       (4)支持一级缓存,以提升应用程序的性能;

       (5)内置的基于 POJO 企业会话管理,适用于 Web 以及非 Web 的环境;

       (6)异构客户端会话访问;

       (7)非常简单的加密 API;

       (8)不跟任何的框架或者容器捆绑,可以独立运行。

   优点:

       易于使用 - 易用性是这个项目的最终目标。

       广泛性 - 没有其他安全框架可以达到Apache Shiro宣称的广度,它可以为你的安全需求提供“一站式”服务。

       灵活性 - Apache Shiro可以工作在任何应用环境中。虽然它工作在Web、EJB和IoC环境中,但它并不依赖这些环境。Shiro既不强加任何规范,也无需过多依赖。

       Web能力 - Apache Shiro对Web应用的支持很神奇,允许你基于应用URL和Web协议(如REST)创建灵活的安全策略,同时还提供了一套控制页面输出的JSP标签库。

       可插拔 - Shiro干净的API和设计模式使它可以方便地与许多的其他框架和应用进行集成。你将看到Shiro可以与诸如Spring、Grails、Wicket、Tapestry、Mule、Apache Camel、Vaadin这类第三方框架无缝集成。

       支持 - Apache Shiro是Apache软件基金会成员,这是一个公认为了社区利益最大化而行动的组织。

   缺点:

       只支持系统级别的访问权限控制,不涉及业务层面的权限控制。而且学习文档较少,不容易深入挖掘。

   3.Ralafafe

   介绍:

        Ralasafe 是用Java编写的开源(MIT协议)访问控制中间件。它能够轻松处理登录控制、URL权限控制和(业务级)数据级权限管理,实现权限与业务分离。Ralasafe是一款开箱即用的中间件,XML配置和JAVA编程工作量非常少,基本都使用图形化操作方式。非常简单易用,开发经验不丰富,也能很快学会。

   原理:

       权限管理与业务逻辑分离,通过制定策略模式,实现对业务逻辑以及数据层面的权限管理控制。提供api或者webservice接口供系统调用来判断权限。

   优点:

       (1)现成的权限配置界面

       (2)可以与系统部署在不同server上

       (3)精细到数据级权限分配管理力度。

   缺点:

       由第三方开源组织提供支持,使用范围不是很广,参考文档较少。偏重于数据级别的权限管理。


原文出处:http://www.sunnyhui.com/post/2012-08-23/40037163504

【转载】JavaEE权限管理分析,码迷,mamicode.com

【转载】JavaEE权限管理分析

标签:http   java   使用   os   数据   io   

原文地址:http://www.cnblogs.com/zuike/p/3700558.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!