查询权限授权策略
Ralasafe 从2个方面保护应用系统:
- 从系统查询数据,比如查询客户,查询订单;
- 向系统提交数据,比如修改客户信息,删除订单信息。
我们称呼第一种为查询权限,第二种为决策权限。
Ralasafe查询权限支持如下特性:
- 根据不同访问用户,返回其对应的授权数据集合;
- 支持分页查询;
- 支持自定义条件查询,比如Alexis Stark查询以“S”开头的员工;
- 支持对满足条件的结果进行数量统计(select count);
- 支持只读字段,查询结果指示哪些字段属于只读字段。
更多信息,查看Javadoc:
- org.ralasafe.Ralasafe的query方法;
- org.ralasafe.WebRalasafe的query方法;
- org.ralasafe.entitle.QueryResult。
您可以对查询权限,设置一条或者多条策略。每条策略由用户分类和数据查询组成,表示如果当前请求用户满足该用户分类,则执行该查询,并返回查询结果。
Ralasafe引擎从第一个策略开始,逐条解析策略。解析步骤如下:
- 解析用户是否被授权(功能权限)执行该权限,如果没有返回大小为0的集合,不是NULL;
- 解析第一条安全策略的用户分类:
- 如果当前请求用户匹配,执行该策略的数据查询,并返回查询结果;
- 如果不匹配,该策略的数据查询将不被执行,解析下一条策略;
- 解析下一条安全策略的用户分类,如果匹配,返回查询结果,否则解析下一条......
- 如果当前请求用户不满足任何一条安全策略,返回大小为0的集合,不是NULL。
Ralasafe demo应用,查询员工权限赋予了如下安全策略:
我们将"Sub-branch User"放在第一位,"HQ Users"放在最后一位,是出于执行效率考虑的。因为整个系统,子公司用户显然多于总部用户。这样更多情况下,引擎只要执行第一条策略即可,无需执行第二条、第三条策略。
当我们完成设计工作后,可以立即在线测试。测试界面如下图示:

它由4个部分组成:
- 用户选择面板:点击查询按钮,从弹出窗口选择用户;
- 测试结果面板:点击绿色执行按钮,ralasafe引擎将解析该查询权限策略;
- 查询结果面板:显示查询结果,查询结果是以您指定的类返回的;
- 策略和策略解析情况面板:显示安全策略,以及策略解析结果(匹配与否);