论坛首页 Java企业应用论坛

讨论:Acegi安全框架能解决和不能解决的安全问题

浏览 11715 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2006-11-04  
   就我目前对Acegi的了解,Acegi安全框架主要解决的安全问题是访问入口级别的安全问题,安全问题我将其分为三类:
1) 入口级安全
   具体体现上界面上每个操作菜单,操作元素是否可操作,在服务端则对URL程序资源和业务服务类方法的限制。

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

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

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


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

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

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

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

0 请登录后投票
   发表时间: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一点都不难
0 请登录后投票
   发表时间:2006-11-05  
   谢谢指正,继续学习。
0 请登录后投票
   发表时间: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没有授权");
}

}
}
。。。。
)
0 请登录后投票
   发表时间:2006-11-06  
acegi中的acl不就是为了解决domain object的授权问题而提出的吗,我看了下,应该可以解决行级数据控制 即可以可以访问哪些数据行,一般的限制项是数据所属单位,当然这里面不包括具体逻辑的东西,如与创建者相关的信息等。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics