2012年5月15日星期二

ADF_124:使用Enterprise Manager为ADF应用动态授权

开发环境:JDeveloper 11.1.1.5 + RCU 11.1.1.5 + WebLogic 10.3.5 + Application Development Runtime 11.1.1.5。

接着《部署ADF应用到独立的WebLogic Server上》,我使用EM为SecureApplication动态授权。

我们知道Application Roles是与应用密切相关的逻辑安全角色,它决定拥有该角色的用户或组的权限。
但是Application Roles是在设计时在JDeveloper中定义的,难道要求每次都把所有的Application Roles事先定义好吗?
即使事先把所有的Application Roles都定义好,将来总是可能要增加或修改Application Roles的权限,难道每次改动都要重新发布应用吗?
能不能把应用本身的逻辑和安全分开来?让开发应用的人只管开发,安全的事情交给运维人员?

ADF Security考虑到了以上所有问题,使用Enterprise Manager可以为ADF应用在运行时动态授权。

1. 动态增加Appliction Roles
(1)右键选择应用,选择Security,选择Appliction Roles

(2)可以看到应用目前的Appliction Roles列表

(3)点击Create按钮增加一个Application Role:manager
注意,Application Role的成员可以是Application Role,说明Application Role可以嵌套。
也就是一个Application Role想要拥有另一个Application Role的权限,只要把另一个Application Role加入到这个Application Role中就可以了。
成员还可以是Group,这个Group就是Enterprise Role,一般建议给Group授予Application Role。
成员还可以是User,说明可以直接为某个用户授予Application Role,当然一般不建议这样做。
在本实验中Group和Users信息都是从从WebLogic Server内嵌的LDAP中读取的。

从上图可以看出,manager角色有一个成员:managerGroup,在mangerGroup中有一个User:maping。
如果你希望managerGroup同时拥有staff角色,可以在staff角色的成员中也加入managerGroup。
也就是说,用户maping同时拥有staff角色和manager角色。
好,我现在新增了一个Application Role:manager,但是这个角色能做些什么事情呢?
下面我就给manager设置Policies。

2. 动态增加Application Policies
(1)右键选择应用,选择Security,选择Appliction Policies

(2)可以看到应用目前的Appliction Policies列表

(3)点击Create按钮增加一个Application Policy
选择应用中不同的资源类型和资源以及Permission Actions。

我给manager角色授予View stock.jspx页面的权限。
注意,这里也可以直接给Group和User授权,不过不建议这样做。还是把权限授予角色比较好。


看到这个授权界面,也许你会产生一个问题,我能不能创建自己的要保护的资源以及Permission Actions?
这是一个很好的问题,我研究之后将另文专述。

3. 测试
不用重启Server或应用,直接访问http://localhost:7001/SecureApplication/faces/welcome.jspx。
使用账户maping/welcome1登录,测试结果完全符合预期——maping同时具有staff和manager的角色权限。



4. 小结
与其它安全框架只能配置认证提供者不同,Enterprise Manager可以为ADF Web应用动态授权,这真是一个非常棒的特性!
应用的代码与安全的逻辑彻底分开了,我很好奇ADF Security是如何做到的,有机会应该看看这部分的源代码。

参考文献:
1. http://andrejusb.blogspot.com/2010/07/managing-adf-security-using-oracle.html
2. http://blog.whitehorses.nl/2010/01/29/weblogic-web-application-container-security-part-1/
3. http://blog.whitehorses.nl/2010/02/01/weblogic-web-application-container-security-part-2-adf-security/
4. http://andrejusb.blogspot.com/2010/05/migrating-security-policies-from.html
5. http://www.oracle.com/technology/products/jdev/tips/muench/credmig111100/index.html
6. http://andrejusb.blogspot.com/2009/01/practical-adf-security-deployment-on.html

没有评论: