OFBIZ安全性技术(翻译)

保护你的应用程序


by Si Chen

OFBIZ可以在用户接口层或业务逻辑层实现安全性保障。在用户接口层,整个WEB应用程序可以被一次性保护,控制器中单个的请求可以被保护,并且单个的页面可以需要特定的权限。在业务逻辑层,每一个服务可以需要特定的权限。

[color=brown][size=large]分配权限[/size][/color]

有一个名叫SecurityPermission的实体描述了粒状的安全权限,这些权限可以用于特定的页面或特定的服务。SecurityPermission是一个两部分的字符串,由”_”分开,第一部分指定了应用程序,第二部分指定了允许的操作。这样的话你就有可能会拥有像"ORDERMGR_CREATE"的权限,它意味着拥有该权限的用户可以在订单管理应用程序里创建信息。有一些权限以_ADMIN结尾,比如ORDERMGR_ADMIN,这些权限自动拥有对应用程序的所有操作权限。

许多单个的安全权限通过实体SecurityPermissionGroup可以被组织到一起。例如,你可以为特定客户创建一组权限,指定谁可以察看客户信息,进入订单,但是不能创建购买订单或者访问内部产品,账户,或者薪水信息和其它功能。

每一个SecurityPermissionGroup都和一个UserLogin关联。一个Party(或许是一个人,或许是一个组织)可以被关联多个UserLogins。这样的话一个人就可以有多个Login,一些Login拥有的权限多一些,一些Login拥有的权限少一些,这样对于大客户是很有用的。这可以在Party Manager的安全tab中操作。


[size=large][color=brown]保护WEB应用程序[/color][/size]

在ofbiz-component.xml文件中定义web应用程序位置处(<web app>标签处),你可以使用<base-tag>标签来指定整个web应用程序需要的权限。仅使用安全权限字符串的第一部分,即应用程序的名字。例如,如果你使用base-permission="ORDERMGR",则web应用程序会自动需要ORDERMGR_VIEW或ORDERMGR_ADMIN。

在许多应用程序中,你会看到base-permission="OFBTOOLS, ORDERMGR",这句话表示了权限OFBTOOLS_VIEW和ORDERMGR_VIEW。base -permission属性允许指定一系列的权限,并且它们必须是真实的同时用户是可以获得访问的。OFBTOOLS_VIEW和 ORDERMGR_VIEW的含义是:OFBTOOLS_VIEW控制了访问对于web应用程序的访问,而ORDERMGR_VIEW可用于控制任何应用程序中订单信息的访问,包括基于web的订单管理,POS,CRM模块或其它应用程序。



在web应用程序的controller.xml中,我们可以用<security>标签为单个的request指定安全性需求。你可以使用<security>标签来实现页面的安全性,可以通过使用https,或者需要一个用户login来访问页面(尽管没有为一个用户login指定特殊的权限)。你也可以通过指定无法从浏览器中定向request来隐藏request,这对于收到了一个request链中的一个不能被单独调用的request的情况是很有效的。

最后,在页面本身你可以使用request,这在页面上是不显示的除非用户login有一定的安全性权限。OFBIZ在一个.bsh文件中使用UserLogin和一个 "security" 对象来检查这些权限。如果你使用widget你还可以使用如下的标签:

[quote]<condition>

<if-has-permission>

<check-permission>

<widgets>

<fail-widgets>[/quote]

OFBIZ允许我们直接在widget里核查权限而不是使用FTL,并设置了一个通过核查时的widget和没有通过核查的widget.


[color=brown][size=large]安全性API[/size][/color]

The most popular security API methods are: 以下是最常用的安全性API方法:

* Security.hasPermission -核查该用户是否具备一个特定的权限。
* Security.hasEntityPermission - 允许你指定权限字符串,字符串有两部分,如"ORDERMGR", "_CREATE",所以,如果用户有"ORDERMGR_CREATE" 或 "ORDERMGR_ADMIN"权限,它将会通过。
* ServiceUtil.getPartyIdCheckSecurity -核查是否用户具备指定的权限,或者实际上是执行自己的操作。只要是任何情况中的一种,该方法都会返回partyId,意味着用户有权限。
* Security.hasRolePermission -核查是否用户具备指定的权限,以及是否用户关联一个角色中特殊的实体。意思是如果你给用户一个权限,比如ORDER_ROLE_VIEW,并且指定他通过实体OrderRole和一个订单关联,这样的话那个用户就有权限察看特定的订单。相同的用户将不会拥有权限查看订单,如果他没有一个OrderRole实体记录的话。

The minilang simple methods also have permission checking tags <if-has-permission> and <check-permission>. Minilang脚本也有可以进行权限核查的标签:<if-has-permission> 和<check-permission>。


[color=brown][size=large]安全性服务[/size][/color]

你可以定义是否一个服务需要一个用户login。此外,你可以使用<security>标签来定义什么权限是需要的。在服务内部,你可以为自己核查权限。有一个安全性相关的方法可以用于核查是否UserLogin拥有某种权限,或者是否用户为自己执行一个任务(比如为自己创建订单)。
你也可以在services.xml里是用<required-permissions> 和<check-permission>标签定义你的权限,

http://blog.sina.com.cn/s/blog_4a4820f9010008vi.html
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值