在 Oracle Web 服务管理器 (Oracle WSM) 中创建自定义策略步骤

Oracle Web 服务管理器 (Oracle WSM) 提供一个用于定义自定义策略步骤的扩展点,自定义策略步骤可作为请求或响应管道的一部分执行。下面的 Oracle 示例 (OBE) 教程提供了创建自定义步骤的详细说明。自定义步骤根据策略步骤管道中配置的一组固定的用户名/口令凭证对用户进行认证。

大约 1 小时

主题

本 OBE 教程包括下列主题:

将光标置于此图标上以加载和查看本教程的所有屏幕截图。(警告:此操作会同时加载所有屏幕截图,网速较慢时,响应时间可能会比较长。)

注:此外,您还可以在下面的步骤中将鼠标放在每个单独的图标上,从而仅加载和查看与该步骤相关的屏幕截图。


概述

Oracle Web 服务管理器 (Oracle WSM) 是一个 Web 服务安全和管理解决方案,它为所有的 Web 服务应用程序提供一个通用的安全基础架构。它提供一个现成的(产品自带的)常用安全策略步骤列表(如认证、授权、消息加密、消息签名等),使您可以对已注册的 Web 服务实施安全策略。Oracle WSM 提供的扩展性允许开发人员创建自定义的步骤。当产品附带的标准策略步骤不提供某一特定功能时,自定义步骤是必需的。例如,应用程序可能需要使用某种类型的认证,但 Oracle WSM 产品中不提供该认证。在这种情况下,必须创建自定义的认证步骤。

您可以按如下所示开发一个自定义步骤:

  1. 构建一个包含自定义步骤的已编译代码的 JAR 文件。
  2. 创建自定义步骤的扩展标记语言 (XML) 配置文件。
  3. 创建自定义步骤的帮助文件。

返回主题列表

前提条件

开始本教程之前,您应该:

  1. 下载适用于 Windows 平台的 Oracle SOA 套件 (10.1.3.1) 并执行基本安装。安装指导见 Oracle 应用服务器安装指南
  2. 下载 applications.zip 文件(包含应用程序文件)并将其解压缩到到您的工作目录中。

返回主题列表

自定义步骤创建:概述

在 Oracle WSM 中,策略在首次创建时进行初始化,或者在对策略进行更改和提交后进行初始化。对策略进行初始化时,将调用策略步骤的 init 方法。您可以自定义 init 方法,以包含特定策略所需的任何初始化步骤。每当有消息到达时,都会调用 execute 方法。该方法包含主要逻辑,用于从消息上下文访问消息的不同部分,同时将信息记录到一个文件中。您必须确保该方法是线程安全的,因为调用此函数的多个请求可能会由多个线程同时执行。在步骤的生命周期结束时,将使用 destroy 方法执行清理操作。升级策略或服务器正常关闭时,将调用该方法。

Oracle WSM 提供以下内容用于创建自定义步骤:

自定义步骤包含两部分:

您还可以为自定义步骤创建 HTML 帮助页面。

返回主题列表

编译并创建 JAR 文件

您需要将自定义步骤实现类打包到一个 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 应用程序服务器的安装目录
%JAVA_HOME% — JDK 的安装目录

注: %APPLICATION_HOME% — 解压缩应用程序文件的目录

2.

将当前工作目录更改为 %APPLICATION_HOME%/CustomAuthStep,输入以下命令:

ant

CustomAuthStep.jar 文件在 %APPLICATION_HOME%/CustomAuthStep/dist/lib 目录中生成。

返回主题列表

创建并注册 Oracle WSM 网关

您需要一个 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 按钮:

基本参数

Component Name

MyGateway

Component Type

Gateway

Container Type Oracle Web Services Manager
Component URL http://localhost:8888/gateway

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 套件。

返回主题列表

将 Web 服务部署到 Oracle 应用服务器

您使用 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 服务注册到网关

在本节中,您会将 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 按钮。

服务详细信息

Service Name

CreditService

Service Version 1.0
Service Description Validates a CreditCard
WSDL URL http://localhost:8888/CreditService/ValidateCreditCardServiceSoapHttp?WSDL
Service Protocol 接受默认的 HTTP(S)。
Service Groups 接受默认设置

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

属性名

Credentials location

WS-BASIC

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 服务管理器控制台,验证您的自定义步骤的帮助可用。

返回主题列表

在本教程中,您学习了如何:

有关本 OBE 教程的问题,请在 OBE 论坛上发布查询。

返回主题列表

将鼠标置于该图标上可以隐藏所有的屏幕截图。