当前位置:七道奇文章资讯编程技术Java编程
日期:2011-03-22 16:14:00  来源:本站整理

动态Proxy与Java ACL用户访谒掌握机制实现[Java编程]

赞助商链接



  本文“动态Proxy与Java ACL用户访谒掌握机制实现[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

用户拜候掌握(Access control )机制老是环绕粗粒度和细粒度两个方面来谈论:

粗粒度掌握:可以规定拜候整个对象或对象群的某个层,而细粒度掌握则老是在办法或属性层举行掌握,比方:

答应一个文件为只读是属于粗粒度掌握,而答应对这个文件某行有写操作则属于细粒度掌握.

一个好的用户掌握机制当然既答应粗粒度也答应细粒度掌握,在Jive中我们看到是利用Proxy来到达这个目的,但是我们也发现,由于需求对每个类都要举行细粒度掌握,所以必定对每个类都要做一个Proxy类,这样带来了很多Proxy类,如ForumProxy ForumThreadProxy ForumFactoryProxy等,无形增添了系统复杂性.

利用动态Proxy可以很好的办理这个问题.再结合java.security.acl的ACL机制,我们便可以机动地实现粗粒度和细粒度的双重掌握.

当一个用户login后,我们就要在内存中为其成立呼应的受权拜候机制,利用java.security.acl可以很便利的成立这样一个安全系统.

首先任何一个对象都应当有个基本属性:拥有者 或拥有者所属组(Windows中每个目录安全描写符都由4部份构成:对象的成立者、对象所属的组、安闲存取掌握和系统存取掌握).

1. Java acl开始第一步是成立一个主体 Principal,此中SecurityOwner是主体的拥有者: private static final Principal _securityOwner = new PrincipalImpl("SecurityOwner");

2. 当用户login进来时,他带有两个基本数据:拜候密码和他要拜候的对象ApplicationName.首先考证用户名和密码,然后从数据库中取出其权限数据,成立Permission,这里利用Feature担当了Permission,在Feature中定义了有关权限的细节数据(如读 写 删).

// 取出用户和被拜候对象之间的权限关系,这种权限关系大概不只一个,也就是说,用户

//大概对被拜候对象拥有读 写 删等多个权限,将其打包在Hasbtable中.

Hashtable features = loadFeaturesForUser(sApplicationName, sUserID);

3. 成立一个用户对象

User user = new UserImpl(sUserID, new Hashtable() );

4. 为这个用户成立一个活动的acl entry

addAclEntry( user, features);

此中最关键的是第四步addAclEntry,我们看看其若何实现的:

// 为这个用户成立一个新的Acl entry
AclEntry newAclEntry = new AclEntryImpl( user);
   //遍历Hashtable features,将此中多种权限加入:
....
feature = (Feature) hFeatures.get(keyName);
newAclEntry.addPermission( feature );
....

最后也要加入主体拥有者SecurityOwner

这样一个安全部系就已经成立完成.

当你在系统中要查验某个用户利用拥有某个权限,如读的权利时,只要

acl.checkPermission(user, feature )便可以,acl是ACL的一个实例,这样权限查抄就交给

java.security.acl.ACL 去处理了.


  以上是“动态Proxy与Java ACL用户访谒掌握机制实现[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:

  • 动态Proxy与Java ACL用户访谒掌握机制实现
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .