【转载】JavaEE权限管理分析

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

时间: 2024-10-14 11:52:38

【转载】JavaEE权限管理分析的相关文章

OA项目14:权限管理功能分析

首注:本学习教程为传智播客汤阳光讲师所公布的免费OA项目视频我的文字版实践笔记,本人用此来加强巩固自己开发知识,如有网友转载,请注明.谢谢. 一 权限管理分析: 1.权限的含义: 即控制管理功能的使用.比如登陆,需要登陆才能看到首页.用户根据自身权限显示其可管理的功能,如用户没有权限,便不会在页面显示. 2.web应用的权限: 每个功能都有相应的一个或多个URL地址,控制用户的URL就可以控制其权限. 3.权限方案: 用户通过角色授权: 用户     --->   角色    --->   权

Oracle权限管理详解(转载)

转载:http://czmmiao.iteye.com/blog/1304934  作者:czmmiao Oracle 权限 权限允许用户访问属于其它用户的对象或执行程序,ORACLE系统提供三种权限:Object 对象级.System 系统级.Role 角色级.这些权限可以授予给用户.特殊用户public或角色,如果授予一个权限给特殊用户"Public"(用户public是oracle预定义的,每个用户享有这个用户享有的权限),那么就意味作将该权限授予了该数据库的所有用户.对管理权限

【转载】SQL Server 2005数据库用户权限管理的设置

SQL Server 2005数据库中,我们可以设置每个用户对应的权限,以提高数据库的安全性.这类用户权限设置的应用非常广泛.比如设置某个用户访问某个表的权限,甚至是CRUD的权限,更小粒度的还可以去到某几个字段的访问权限等等.其实这一设置过程是很简单的,接下来就让我们来一起学习吧. 一.操作步骤 1. 首先进入数据库级别的[安全性]-[登录名]-[新建登录名] (图1:新建登录名) 2. 在[常规]选项卡中,如下图所示,创建登陆名,并设置默认的数据库. (图2:设置选项) 3. 在[用户映射]

NopCommerce源代码分析之用户验证和权限管理

目录 1.  介绍 2.  UML 2.1  实体类UML图 2.2  业务相关UML图 3.  核心代码分析 3.1  实体类源代码 3.2  业务相关源代码 3.3  相关控制器源代码 3.4  相关View源代码 4.  总结 1.  介绍 1.1  nopcommerce介绍 nopcommerce是国外的一个高质量的开源b2c网站系统,基于EntityFramework4.0和MVC3.0,使用Razor模板引擎,有很强的插件机制,包括支付配送功能都是通过插件来实现的. nopcomm

用户权限管理(转载)

实现业务系统中的用户权限管理--设计篇 B/S系统中的权限比C/S中的更显的重要,C/S系统因为具有特殊的客户端,所以访问用户的权限检测可以通过客户端实现或通过客户端+服务器检测实现,而B/S中,浏览器是每一台计算机都已具备的,如果不建立一个完整的权限检测,那么一个"非法用户"很可能就能通过浏览器轻易访问到B/S系统中的所有功能.因此B/S业务系统都需要有一个或多个权限系统来实现访问权限检测,让经过授权的用户可以正常合法的使用已授权功能,而对那些未经授权的"非法用户"

Shiro权限管理详解<转载>

1 权限管理1.1 什么是权限管理 基本上涉及到用户参与的系统都要进行权限管理,权限管理属于系统安全的范畴,权限管理实现对用户访问系统的控制,按照安全规则或者安全策略控制用户可以访问而且只能访问自己被授权的资源. 权限管理包括用户身份认证和授权两部分,简称认证授权.对于需要访问控制的资源用户首先经过身份认证,认证通过后用户具有该资源的访问权限方可访问. 1.2 用户身份认证1.2.1 概念 身份认证,就是判断一个用户是否为合法用户的处理过程.最常用的简单身份认证方式是系统通过核对用户输入的用户名

OA系统权限管理设计(转载)

不论什么系统都离不开权限的管理,有一个好的权限管理模块,不仅使我们的系统操作自如,管理方便,也为系统加入亮点. l         不同职责的人员,对于系统操作的权限应该是不同的.优秀的业务系统,这是最主要的功能. l         能够对"组"进行权限分配.对于一个大企业的业务系统来说,假设要求管理员为其下员工逐一分配系统操作权限的话,是件耗时且不够方便的事情.所以,系统中就提出了对"组"进行操作的概念,将权限一致的人员编入同一组,然后对该组进行权限分配. l 

Oracle权限管理详解

转载--CzmMiao的博客生活 Oracle 权限 权限允许用户访问属于其它用户的对象或执行程序,ORACLE系统提供三种权限:Object 对象级.System 系统级.Role 角色级.这些权限可以授予给用户.特殊用户public或角色,如果授予一个权限给特殊用户"Public"(用户public是oracle预定义的,每个用户享有这个用户享有的权限),那么就意味作将该权限授予了该数据库的所有用户.对管理权限而言,角色是一个工具,权限能够被授予给一个角色,角色也能被授予给另一个角

通用权限管理设计 ( 数据库结构设计)

一,前言  权限管理系统的应用者应该有三种不同性质上的使用, A,使用权限 B,分配权限 C,授权权限 本文只从<使用权限>和<分配权限>这两种应用层面分析,暂时不考虑<授权权限>这种. 二,初步分析 用户和角色 说到权限管理,首先应该想到,当然要设计一个用户表,一个权限表.这样就决定了一个人有什么样的权限. 做着做着就会发现这样设计太过繁琐,如果公司里面所有员工都有这样的权限呢,每一个人都要配置?那是一件很痛苦的事情.因此再添加一个角色表,把某些人归为一类,然后再把权