右键单击服务器,并选择 Start。
服务器启动时,右键单击该服务器并选择 Add and remove projects...。
从列表中选择 CreditApprovalSCAModuleApp 应用程序,并单击 Add 按钮。单击 Finish,等待部署完成。
展开 Dynamic Web Projects、CreditApprovalClient 和 Webcontent。
右键单击 creditApprovalClient.jsp 并选择 Run - Run on Server...
选择 WebSphere Process Server 并单击 Finish。
将随即显示登录页面。输入具有 manager 角色的用户代码及密码(图 9)。
图 9. 登录页
在下一页的 First Name 和 Last Name 字段中输入有效值,在 Customer Id 字段中输入 1,然后单击 SubmitCreditApp 按钮。
由于 SCA 组件授权给具有 manager 角色的用户,因此页面上将显示信用查询结果(图 10)。
图 10. 结果页
现在已经成功连接了,接下来请关闭浏览器,重新启动服务器并运行 creditApprovalClient.jsp,但这次使用 nonManager 类用户登录。
对于此用户,未授权访问 SCA 组件,因此将显示一条错误消息。
在示例中,SCA 服务运行时引发的异常将由 JSP 捕获,并在页面上显示相应的异常消息(图 11)。
图 11. 访问未授权
关闭 Web 浏览器并停止服务器。
定义安全标识
SCA 组件的安全标识与 EJB run-as 委托策略相似。即,SCA 组件的实现代码将使用调用方标识执行。在我们的示例中,调用方是 JSP 页。如果观察一下结果页(图 10),您会注意到显示的是 Run-As user,即执行 SCA 组件的 Java 实现代码 (CreditApprovalImpl.java) 的用户。
但可以修改此缺省行为,而将组件的所有方法委托为作为特定安全角色的成员运行。要在 SCA 组件的实现级别定义此特定角色。
此后,必须在部署期间分配一个是指定的安全角色的成员的实际用户。
要获取 Java 实现中的 Run-As 用户代码,请使用 JAAS Subject 和用户经过 WebSphere Process Server 身份验证时创建的公共凭据。清单 1 显示了用于检索 Run-As 用户的 Java 代码。
清单 1. 获取 Run-As 用户
2
3 WSCredentialImpl pubCred = null;
4
5 Subject sujetWS = WSSubject.getRunAsSubject();
6
7 Set set = sujetWS.getPublicCredentials();
8
9 if (!set.isEmpty()) {
10
11 pubCred = (WSCredentialImpl) set.iterator().next();
12
13 }
14
15 creditRating.setString("customerId", creditApplication
16
17 .getString("customerId")
18
19 + " Run-As user : " + pubCred.getSecurityName());
20
21 } catch (Exception e) {
22
23 }
24
25
在实现级别定义安全标识
在 Business Integration 透视图中双击 CreditApprovalSCAModule 模块。
单击 CreditApproval 组件。
转到 Properties 视图,单击 Impementation 并切换到 Qualifiers 选项卡。
单击 Add 按钮,以显示可用的服务质量。
选择 Security identity 并单击 OK。
选择 Security identity 限定符,并在 Privilege 字段中输入 delegate(图 12)。
图 12. 安全标识
保存并关闭模块。
要使用 SCDL 来定义安全权限和标识。SCDL 定义存储在多个文件中,但安全元素和接口及实现定义一起存储在名为 CreditApplication.component 的文件中。
要 Business Integration 透视图中检查此文件的内容(图 13),请从 Window 菜单中选择 Show View - Physical Resources。展开 CreditApprovalSCAModule。
图 13. SCDL 定义
将用户分配给安全标识
用户只能在部署时使用管理控制台映射到安全标识。对于当前的版本,为了完成此工作,必须从 Ear 文件部署应用程序。
切换到 J2EE 透视图。
从 File 菜单中选择 Export...。选择 EAR file 并单击 Next 按钮。
选择 CreditApprovalSCAModuleApp EAR 项目和一个目标文件。单击 Finish。
在 Servers 选项卡上,启动 WebSphere Process Server。
右键单击 WebSphere Process Server 并选择 Run administrative console。
登录,然后在 Applications 项中选择 Enterprise Applications。
选择 CreditApprovalSCAModuleApp 并单击 Stop。
选择 CreditApprovalSCAModuleApp 并单击 Uninstall。单击 OK。
单击 Install,然后单击 Browse 按钮。选择之前保存的 Ear 文件,并单击 Next,然后再单击 Next。
单击 Step 7: Map RunAs roles to users。
选中 delegate 角色,并输入映射到委托角色的用户代码和密码。单击 Apply(图 14)。
图 14. Map RunAs roles to users
单击 Next,然后单击 Next 和 Finish。
保存到主配置。如果出现保存冲突,请为所有项选择 Overwrite。
从 Applications 菜单中选择 SCA modules。
选择 CreditApprovalSCAModule 并单击 Start。
测试安全标识
在 J2EE 透视图中依次展开 Dynamic Web Projects、CreditApprovalClient、Webcontent。
右键单击 creditApprovalClient.jsp 并选择 Run - Run on Server...
选择 WebSphere Process Server 并单击 Finish。
将随即显示登录页面。输入具有 manager 角色的用户代码及密码。
在下一页的 First Name 和 Last Name 字段中输入值,在 Customer Id 字段中输入 1,然后单击相应按钮
页面上将显示具有 delegate 角色的用户为 Run-As 用户(图 15)。请注意,可以为安全标识选择未授权访问 SCA 组件的角色。
图 15. RunAs 结果页
结束语
服务质量是 SCA 的一项重要特性,而安全又属于可用于的 QoS 限定符的一部分。本文介绍了 SCA 组件的两个安全限定符(安全权限和安全标识),并讨论了可以如何使用 WebSphere Integration Developer 6.0.1 定义和使用这些限定符。