Oracle Web 服务管理器 (Oracle WSM) 提供一个用于定义自定义策略步骤的扩展点,自定义策略步骤可作为请求或响应管道的一部分执行。下面的 Oracle 示例 (OBE) 教程提供了创建自定义步骤的详细说明。自定义步骤根据策略步骤管道中配置的一组固定的用户名/口令凭证对用户进行认证。
大约 1 小时
本 OBE 教程包括下列主题:
| 概述 | ||
| 前提条件 | ||
| 自定义步骤创建:概述 | ||
| 编译并创建 Java 存档 (JAR) 文件 | ||
| 创建并注册 Oracle WSM 网关 | ||
| 部署自定义步骤 | ||
| 将 Web 服务部署到 Oracle 应用服务器 | ||
| 将 CreditService Web 服务注册到网关 | ||
| 将自定义策略步骤添加到网关 | ||
| 查看受保护的 Web 服务的 Web 服务描述语言 (WSDL) | ||
| 测试安全实现 | ||
| 为自定义步骤添加帮助页面 | ||
| 总结 | ||
| 相关信息 | ||
将光标置于此图标上以加载和查看本教程的所有屏幕截图。(警告:此操作会同时加载所有屏幕截图,网速较慢时,响应时间可能会比较长。)
注:此外,您还可以在下面的步骤中将鼠标放在每个单独的图标上,从而仅加载和查看与该步骤相关的屏幕截图。
Oracle Web 服务管理器 (Oracle WSM) 是一个 Web 服务安全和管理解决方案,它为所有的 Web 服务应用程序提供一个通用的安全基础架构。它提供一个现成的(产品自带的)常用安全策略步骤列表(如认证、授权、消息加密、消息签名等),使您可以对已注册的 Web 服务实施安全策略。Oracle WSM 提供的扩展性允许开发人员创建自定义的步骤。当产品附带的标准策略步骤不提供某一特定功能时,自定义步骤是必需的。例如,应用程序可能需要使用某种类型的认证,但 Oracle WSM 产品中不提供该认证。在这种情况下,必须创建自定义的认证步骤。
您可以按如下所示开发一个自定义步骤:
开始本教程之前,您应该:
在 Oracle WSM 中,策略在首次创建时进行初始化,或者在对策略进行更改和提交后进行初始化。对策略进行初始化时,将调用策略步骤的 init 方法。您可以自定义 init 方法,以包含特定策略所需的任何初始化步骤。每当有消息到达时,都会调用 execute 方法。该方法包含主要逻辑,用于从消息上下文访问消息的不同部分,同时将信息记录到一个文件中。您必须确保该方法是线程安全的,因为调用此函数的多个请求可能会由多个线程同时执行。在步骤的生命周期结束时,将使用 destroy 方法执行清理操作。升级策略或服务器正常关闭时,将调用该方法。
Oracle WSM 提供以下内容用于创建自定义步骤:
自定义步骤包含两部分:
注:您还可以为自定义步骤创建 HTML 帮助页面。
您需要将自定义步骤实现类打包到一个 JAR 文件中。至少需要包括以下 JAR 文件,以编译自定义步骤的 Java 代码。这是您的自定义代码所依赖的额外 JAR 文件之外的文件。
ORACLE_HOME/owsm/lib/extlib/saaj.jar
ORACLE_HOME/owsm/lib/coresv-4.0.jar
|
1. |
打开一个命令提示符窗口,导航到您解压缩应用程序文件的目录 (%APPLICATION_HOME%),然后设置以下环境变量: %ORACLE_HOME% — Oracle 应用程序服务器的安装目录 注: %APPLICATION_HOME% — 解压缩应用程序文件的目录 |
|
2. |
将当前工作目录更改为 %APPLICATION_HOME%/CustomAuthStep,输入以下命令: ant 注:CustomAuthStep.jar 文件在 %APPLICATION_HOME%/CustomAuthStep/dist/lib 目录中生成。 |
您需要一个 Oracle WSM 组件(网关或代理),可在其中添加自定义步骤。因此,使用 Web 服务管理器控制台来创建和注册 Oracle WSM 网关。
注:在本教程中,您使用一个 Oracle WSM 网关来添加自定义步骤。同样的过程还适用于 Oracle WSM 服务器代理和 Oracle WSM 客户端代理。
|
1. |
打开任何一种 Internet 浏览器,通过在地址栏内输入以下 URL 登录到 Web 服务管理器控制台: http://localhost:8888/ccore |
||||||||||
|
2. |
使用用户 ID oc4jadmin 和口令 welcome1(或者是安装 SOA 套件时指定的口令)登录。 |
||||||||||
| 3. |
在 Web Services Manager Control:Enforcement Points 页面,单击 Add New Component 按钮。
|
||||||||||
| 4. |
在 Add New Component 页面中,输入以下详细信息,然后单击 Register 按钮:
|
||||||||||
| 5. |
验证组件已成功添加。单击 OK。 注:无论您何时使用 C0003001 组件 ID 创建网关,都无需显式地安装它。默认情况下,gateway-config-installer.properties 文件中的 gateway.component.id 属性设为 C0003001。如果组件 ID 不同,您需要编辑位于 ORACLE_HOME\j2ee\home\applications\gateway\gateway\WEB-INF 目录中的 gateway-config-installer.properties 文件,将 gateway.component.id 域的值替换为您要安装的网关的组件 ID(例如,gateway.component.id=C0003006)。保存配置文件,重新启动应用服务器以启动网关。
|
您的任务是将自定义步骤部署到 Oracle WSM 策略管理器。执行以下步骤来执行此任务:
| 1. |
在 Web Service Manager Control 页面上,展开导航菜单中的 Policy Management 项,然后选择 Manage Policies。
|
| 4. |
单击要为其添加自定义步骤的组件 (MyGateway) 所在行的 Steps 链接。Step Management 页面显示了步骤列表。
|
| 5. |
单击 Step Management 页面中的 Add New Step 按钮。Web 服务管理器控制台显示 Step Management/Add Step 页面。
|
| 6. |
单击 Browse 按钮,选择位于 %APPLICATION_HOME%/CustomAuthStep 目录下 CustomStep.xml 步骤模板。 注:CustomStep.xml 由应用程序文件提供。
|
| 7. |
单击 Step Management/Add Step 页面中的 Upload 按钮。Step Management 页面更新可用步骤列表,包括新添加的步骤。
|
| 8. |
将 CustomAuthStep.jar 文件从 %APPLICATION_HOME%/CustomAuthStep/dist/lib 目录复制到 %ORACLE_HOME%/owsm/lib/custom 目录。
|
| 9. |
重新启动 SOA 套件。
|
您使用 Oracle 应用服务器控制台工具部署 CreditService Web 服务应用程序。要完成该任务,执行以下步骤:
|
1. |
打开任何一种 Internet 浏览器,在地址栏内输入以下 URL: http://localhost:8888/em |
| 2. |
使用用户名 oc4jadmin 和口令 welcome1(或者是安装 SOA 套件时指定的口令)登录到 Oracle 应用服务器控制台。 |
| 3. |
单击 Cluster Topology 页面中的 home 链接。
|
| 4. |
单击 OC4J:home 页面中的 Applications 选项卡。
|
| 5. |
单击 OC4J:home 页面的 Applications 选项卡中的 Deploy 按钮。
|
| 6. |
单击 Deploy: Select Archive 页面的 Archive 部分的 Browse 按钮。选择位于 %APPLICATION_HOME%/Web service 目录下的 CreditService.ear 文件。单击 Next 按钮。
|
| 7. |
在 Deploy:Application Attributes 页面中,将 Application Name 指定为 CreditServiceApp,然后单击 Next 按钮。
|
| 8. |
在 Deploy:Deployment Settings 页面中,单击 Deploy 按钮。
|
| 9. |
验证应用程序部署已成功。单击 Return 按钮。
|
在本节中,您会将 CreditService Web 服务注册到刚刚创建的网关。这样,您可以将网关与其将要保护的 Web 服务相关联。要完成该任务,执行以下步骤:
|
1. |
登录到 Web 服务管理器控制台。展开导航菜单中的 Policy Management 项,然后选择 Register Services。
|
||||||||||||||
| 2. |
单击 MyGateway 网关的 Services 链接。
|
||||||||||||||
| 3. |
在 Gateways/List of Services 页面中,单击 Add New Service 按钮。
|
||||||||||||||
| 4. |
在 Add New Service 页面中,输入以下服务详细信息,然后单击 Next 按钮。
|
||||||||||||||
| 5. |
在 Configure Messenger Step for New Service 页面中,验证 URL 与您在上一页中提供的 URL 相匹配。接受其余域的默认值,然后单击 Finish。
|
||||||||||||||
| 6. |
在 Services 页面中,单击 OK 按钮。
|
||||||||||||||
| 7. |
在 Gateways/List of Services 页面中,单击 Commit 链接。
|
||||||||||||||
| 8. |
在 Gateways 页面中,单击 OK 按钮。
|
既然已经将 CreditService Web 服务与网关相关联了,您需要添加网关用来保护该服务的策略。在本节中,您将自定义策略步骤添加到 CreditService Web 服务的策略管道。要完成该任务,执行以下步骤:
|
1. |
展开导航菜单中的 Policy Management 项,然后选择 Manage Policies。
|
||||
|
2. |
单击 MyGateway 组件的 Policies 链接。
|
||||
| 3. |
单击 CreditService(1.0) 策略的 Edit 图标。
|
||||
| 4. |
在 Pipeline:Request 部分中,单击 Log 策略步骤中的 Add Step Below 链接。
|
||||
| 5. |
在 New Step 对话框中,从 Select Step Template 下拉列表中选择 Extract Credentials。单击 OK。
|
||||
| 6. |
单击 Extract Credentials 部分中的 Configure 链接。
|
||||
| 7. |
修改 Credentials location 属性域中的以下值,然后单击 OK。
|
||||
| 8. |
单击 Extract Credentials 策略步骤中的 Add Step Below 链接。
|
||||
| 9. |
在 New Step 对话框中,从 Select Step Template 下拉列表中选择 Custom authenticate step。单击 OK。
|
||||
| 10. |
单击 Custom authenticate step 部分中的 Configure 链接,查看 Custom authenticate step 的属性详细信息。该自定义步骤的用户名和口令用于验证输入的用户名/口令。在 CustomStep.xml 文件中,它们被设置为 test/test,您可以根据需要进行修改。单击 OK。
|
||||
| 11. |
向下滚动并单击 Next 按钮。
|
||||
| 12. |
将 Policy Name 定义为 CustomStepPolicy,然后单击 Save 按钮。
|
||||
| 13. |
单击 Commit 链接,提交对策略的更改。
|
为了测试 Web 服务的安全策略实现,您应当向该 Web 服务注册的 Oracle WSM 网关发出请求。您将获得 Oracle WSM 提供的 Web 服务的 WSDL URL。执行以下步骤,查看 Oracle WSM 公开的 CreditService Web 服务的受保护的 WSDL 定义。
|
1. |
展开导航菜单中的 Policy Management 项,然后选择 Register Services。
|
|
2. |
单击 MyGateway 网关的 Services 链接。
|
| 3. |
在 Gateways/List of Services 页面中,单击 CreditService 服务的 View Details 图标。
|
| 4. |
在 Gateways/View Details 页面中,复制 Service WSDL URL 域中的 URL。单击 OK。 注: 您将在下一个任务中使用此 URL。
|
您模拟一个 Web 服务请求,以测试 CreditService 得到了正确的保护。您使用添加到自定义步骤配置文件 (CustomStep.xml) 中的用户名和口令发出请求。执行以下步骤来完成此任务:
|
1. |
展开导航菜单中的 Tools 项,然后选择 Test Page。
|
|
2. |
在 Test Web Service 页面中,将您复制的 URL 粘贴到 Enter wsdl url 文本框中,然后单击 Submit Query 按钮。
|
| 3. |
在 Test Page/Test Web Service 页面中,选中 WS-Security 部分中的 Include In Header 复选框。展开 WS-Security 节点。在 User Name 域中输入 test,在 Password 域中输入 test。在 CreditCard 部分中,在 ccType 域中输入 AMEX,在 ccNum 域中输入 123456789。单击 Invoke 按钮。
|
| 4. |
在 Test Result 页面中,单击 Formatted XML 链接以查看结果。
|
| 5. |
单击 Test same WSDL again 链接,验证认证失败。在出现的页面中,仅输入 CreditCard 部分的信息。不要选中 WS-Security 的 Include In Header 复选框。如果您选择了该复选框,则提供错误的用户名/口令以验证认证失败。您将会看到认证失败。 |
如果要为自定义步骤添加帮助页面,执行以下任务:
|
1. |
为自定义步骤创建 HTML 帮助页面,并将其保存在 %ORACLE_HOME%/owsm/lib/app/ccore/help/steps 目录中。用步骤名命名文件,同时用下划线替代空格。例如,如果步骤名为“Custom authenticate step”,则帮助页面名称为“Custom_authenticate_step.html”。 |
|
2. |
重新启动 SOA 套件。 |
| 3. |
导航到 %ORACLE_HOME%/owsm/bin 目录,在命令提示符下执行以下命令: wsmadmin deploy <应用服务器口令> control 该命令用新建的帮助页面对 Web 服务管理器应用程序进行重新打包,并将其重新部署到应用服务器上。 |
| 4. |
登录到 Web 服务管理器控制台,验证您的自定义步骤的帮助可用。
|
在本教程中,您学习了如何:
| 自定义步骤创建:概述 | ||
| 编译并创建 JAR 文件 | ||
| 创建并注册 Oracle WSM 网关 | ||
| 部署自定义步骤 | ||
| 将 Web 服务部署到 Oracle 应用服务器 | ||
| 将 CreditService Web 服务注册到网关 | ||
| 将自定义策略步骤添加到网关 | ||
| 查看受保护的 Web 服务的 WSDL | ||
| 测试安全实现 | ||
| 为自定义步骤添加帮助页面 | ||
| 有关本 OBE 教程的问题,请在 OBE 论坛上发布查询。 |
将鼠标置于该图标上可以隐藏所有的屏幕截图。