决策权限授权策略
Ralasafe 从2个方面保护应用系统:
- 从系统查询数据,比如查询客户,查询订单;
- 向系统提交数据,比如修改客户信息,删除订单信息。
我们称呼第一种为查询权限,第二种为决策权限。
Ralasafe决策权限支持如下特性:
- 根据不同请求用户,返回不同的决策结果;
- 返回相应的拒绝信息。
更多信息,查看Javadoc:
- org.ralasafe.Ralasafe的permit方法;
- org.ralasafe.WebRalasafe的permit方法;
- org.ralasafe.entitle.Decision。
您可以对决策权限,设置一条或者多条策略。每条策略由决策、用户分类、业务数据和拒绝理由组成。
Ralasafe引擎从第一个策略开始,逐条解析策略。解析步骤如下:
- 解析用户是否被授权(功能权限)执行该权限,如果没有,返回拒绝;
- 解析第一条策略的用户分类:
- 如果匹配,进一步解析业务数据:
- 如果匹配,将该策略的决策做为决策结果返回。如果该决策结果是拒绝,将该策略的拒绝理由做为拒绝理由返回;
- 如果不匹配,解析下一条策略;
- 如果不匹配,解析下一条策略;
- 解析下一条策略的用户分类,如果匹配,进一步解析业务数据......
- 如果所有策略解析完毕都没有结果,返回拒绝,并将"You are not granted to execute it"做为拒绝理由返回。
Ralasafe demo应用,借款决策权限赋予了如下安全策略:
它表示任何人如果当次借款超过$5000,将拒绝请求;任何人算上本次借款当日借款不超过$20000,将允许该请求。
当我们完成设计工作后,可以立即在线测试。测试界面如下图示:

它由5个部分组成:
- 用户选择面板:点击查找按钮,从弹出窗口选择用户;
- 上下文值面板:这个面板是可选的,当策略使用到上下文值的时候,才会出现;
- 业务数据面板:输入Javabean映射类,输入需要的属性值;
- 测试结果面板:点击运行按钮,ralasafe引擎将解析策略;
- 策略及策略解析情况面板:显示安全策略,以及策略解析结果(匹配与否);