搜索墙首页  编程技术  java  asp  ajax  php  c/c#/c++  数据库  oracle  mysql  db2  操作系统  windows  linux  股吧
首页 > 编程 > java > Spring
 1         
1楼  stamen 2006-11-04

   就我目前对Acegi的了解,Acegi安全框架主要解决的安全问题是访问入口级别的安全问题,安全问题我将其分为三类:
1) 入口级安全
   具体体现上界面上每个操作菜单,操作元素是否可操作,在服务端则对URL程序资源和业务服务类方法的限制。

2) 数据域安全
  数据域控制包括两个部分,分别是:
  2.1 行级数据控制 即可以可以访问哪些数据行,一般的限制项是数据所属单位;
  2.2 字段级控制 即用户可以访问数据行的哪些字段;

3)系统级安全
  如访问IP段的限制,登录时间段的限制,登录次数的限制等。

    Acegi由于和业务无关,所以只能解决1)点的安全问题,2),3)的安全问题是和业务,组织机构相关的,所以必须程序编码解决。
    严格上说,Acegi对1)点的解决也是不彻底的,因为它只解决了服务端的程序资源访问控制,操作界面上的元素是要我们编码实现的。不过,这也好理解,因为界面的入口元素是最灵活多样的,Acegi不应该涉足。
所以我觉得Acegi在一个很适合的领域时,很好的解决了一些适合框架解决的问题,它不贪恋那些不容易框架实现而需求变化大多的问题。
  
2楼  Feiing 2006-11-04

stamen 写道
 
    Acegi由于和业务无关,所以只能解决1)点的安全问题,2),3)的安全问题是和业务,组织机构相关的,所以必须程序编码解决。
    严格上说,Acegi对1)点的解决也是不彻底的,因为它只解决了服务端的程序资源访问控制,操作界面上的元素是要我们编码实现的。不过,这也好理解,因为界面的入口元素是最灵活多样的,Acegi不应该涉足。
所以我觉得Acegi在一个很适合的领域时,很好的解决了一些适合框架解决的问题,它不贪恋那些不容易框架实现而需求变化大多的问题。


1. 实例级权限控制 Acegi 通过 ACL 实现, 虽然使用上不太方便, 但它是标准的方案

2. 属性级权限控制还没听有通用的方案

3. 界面上通过 auth tag 实现控制, 一般的需求足够用了, 太特殊的也不是 security framework 管辖的范畴

4. 限登录 ip, 时间, 次数本身也不是难点, 新的版本应该会提供

3楼  quaff 2006-11-05

Feiing 写道
stamen 写道
 
    Acegi由于和业务无关,所以只能解决1)点的安全问题,2),3)的安全问题是和业务,组织机构相关的,所以必须程序编码解决。
    严格上说,Acegi对1)点的解决也是不彻底的,因为它只解决了服务端的程序资源访问控制,操作界面上的元素是要我们编码实现的。不过,这也好理解,因为界面的入口元素是最灵活多样的,Acegi不应该涉足。
所以我觉得Acegi在一个很适合的领域时,很好的解决了一些适合框架解决的问题,它不贪恋那些不容易框架实现而需求变化大多的问题。


1. 实例级权限控制 Acegi 通过 ACL 实现, 虽然使用上不太方便, 但它是标准的方案

2. 属性级权限控制还没听有通用的方案

3. 界面上通过 auth tag 实现控制, 一般的需求足够用了, 太特殊的也不是 security framework 管辖的范畴

4. 限登录 ip, 时间, 次数本身也不是难点, 新的版本应该会提供


4.可以限制同时登录次数,详情参考springside
仿照这个写一个登录ip和时间限制的plugin一点都不难
4楼  stamen 2006-11-05

   谢谢指正,继续学习。
5楼  realzn 2006-11-06

控制ip,自己写代码
public class UserAuthenticationProcessingFilter extends AuthenticationProcessingFilter {
......
String ip = request.getRemoteAddr();
.......
Authentication authResult = getAuthenticationManager().authenticate(authRequest);
if (authResult != null && authResult.getPrincipal() instanceof UserDetails) {
UserDetails ud = (UserDetails) authResult.getPrincipal();
User user = userManager.getUserByLoginidAndPasswd(ud.getUsername(), ud.getPassword());
if (!user.getIp().equals(ip)) {
throw new IpAuthenticationException("ip没有授权");
}

}
}
。。。。
)
6楼  kimfly 2006-11-06

acegi中的acl不就是为了解决domain object的授权问题而提出的吗,我看了下,应该可以解决行级数据控制 即可以可以访问哪些数据行,一般的限制项是数据所属单位,当然这里面不包括具体逻辑的东西,如与创建者相关的信息等。
 1         
您的发言将按有关规定都会存档,您须为所发表后果负责,请您遵纪守法并注意语言文明。
标题:讨论:Acegi安全框架能解决和不能解决的安全问题
热门关注
标题回复点击
商业J2EE中间件价值何在?74364
GoogleGuice-比Spring快100倍的IoC容器50322
Hibernate和Spring的决裂以及Spring和EJB3之争48299
关于pojo、dao、service的困惑49298
ThreadLocal与synchronized83287
请教Spring的分布式事务管理44255
spring的事务不起作用?无法和当前sessin绑定?31247
spring+Hibernate中异常如何处理19244
请问这样的细粒度权限能否用acegi实现?47236
用spring的queryForList方法取结果集,字段中含有CLOB怎么办?0226
搜索墙@2009 www.pkwall.com all rights reserved QQ:276471788 [京ICP备09111534号]
声明:本站部分数据来源于网络,仅供参考,如有版权问题,请联系我们,我们将及时删除!转载本站请注明来源