FeaturesPluginsDocs & SupportCommunityPartners

使用 SAML 或 UserNameToken 配置文件确保 Web 服务的安全

NetBeans Enterprise Pack 5.5 捆绑了所有必需的运行环境,从而使您可以开发基于身份验证的安全 Web 服务客户端和提供程序。这些运行环境包括:

  • Sun Java System Application Server Platform Edition 9 Update 1
  • Sun Java System Access Manager 7.1 和 Sun Java System Policy Agent 2.2 for Web Services

本教程将介绍如何使用捆绑的访问管理器在 Web 服务的客户端和 Web 服务提供程序之间进行基于 SAML 和基于 UserNameToken 的验证,其中访问管理器支持应用服务器的 Web 服务客户端和服务器端容器所使用的 WS-Security 标准。

先决条件

要了解本教程,您需要具备 Java 语言及其平台以及 NetBeans IDE 的一些基本知识或编程经验。

系统要求

本教程假定您的系统满足 NetBeans Enterprise Pack 5.5 发行说明的“系统要求”主题中的指定要求。

本教程所需的软件

在开始之前,您必须在计算机中安装以下软件:

  • 包含 NetBeans Enterprise Pack 5.5 的 NetBeans IDE 5.5(下载
  • 要完成本教程中的部署步骤,必须安装 Sun Java System Application Server Platform Edition 9 Update 1。该应用服务器与 NetBeans Enterprise Pack 5.5 下载包捆绑在一起。

目录

返回页首


配置教程环境

  1. 启动 IDE。
  2. 要验证是否在 IDE 中配置了 Sun Java System Application Server,请单击“运行环境”标签,然后展开“服务器”节点。
  3. 如果“服务器”节点不包含 "Sun Java System Application Server 9" 节点,请按照添加应用服务器中的步骤进行操作。
  4. 在“运行环境”窗口中,展开“服务器”节点,右键单击 "Sun Java System Application Server 9" 节点,然后从弹出式菜单中选择“启动”。
    一直等到“输出”窗口中显示以下消息:
    “应用服务器启动完成。”
    当服务器处于运行状态时,IDE 将在 "Sun Java System Application Server 9" 节点的旁边显示一个绿色箭头标记。
    注意:如果“启动”选项不可用,则说明服务器已在运行。

返回页首


创建教程项目

两个教程项目为:StockServerStockClient

创建 StockServer 项目:

  1. 从 IDE 的主菜单中,选择“文件”>“新建项目”。
  2. 在“类别”列表中,展开“样例”节点,然后选择 "Identity Blueprint" 节点。
  3. 在“项目”列表中,选择“股票服务”。
  4. 单击“下一步”。
  5. 接受缺省项目名称 (StockServer),但是可以选择更改项目位置。
  6. 单击“完成”。

创建 StockClient 项目:

  1. 从 IDE 的主菜单中,选择“文件”>“新建项目”。
  2. 在“类别”列表中,展开“样例”节点,然后选择 "Identity Blueprint" 节点。
  3. 在“项目”列表中,选择“股票客户端”。
  4. 单击“下一步”。
  5. 接受缺省项目名称 (StockClient) 和项目位置值。
  6. 单击“完成”。
    现在,“项目”窗口会包含一个 "StockClient" 项目节点。

返回页首


确保 Web 服务的安全:使用 SAML-HolderOfKey 安全机制

在本方案中,我们将使用没有签名响应的 SAML-HolderOfKey 安全配置文件,并使用缺省密钥库。为此,我们首先需要编辑访问管理器的标记配置文件,然后配置 Web 服务提供程序和客户端。

编辑 SAML-HolderOfKey 配置文件:

  1. 在“运行环境”窗口中,展开 "Sun Java System Access Manager" 节点,然后展开“缺省实例”和“配置文件”节点。
  2. 选择 "SAML-HolderOfKey" 节点,单击鼠标右键,然后选择“编辑”。
    将打开“编辑 SAML-HolderOfKey 配置文件”对话框。
  3. 清除“签名响应”复选框。
  4. 在“现有证书设置”下面,将“使用缺省密钥库”复选框保留为选中状态。
  5. 单击“确定”。

配置 Web 服务提供程序:

  1. 在“项目”窗口中,展开 "StockServer" 节点和“Web 服务”节点。
  2. 在“Web 服务”节点下面,右键单击 "stockservice" 节点,然后从弹出式菜单中选择“编辑 Web 服务属性”。
    将打开“Web 服务提供程序安全配置”对话框。
  3. 选中“启用消息级别安全功能”复选框。
  4. 在“安全机制”下面,从“请求”下拉列表中选择 "SAML-HolderOfKey"。

  5. 单击“确定”。

配置 Web 服务客户端:

  1. 在“项目”窗口中,展开 "StockClient" 节点和“Web 服务引用”节点。
  2. 在“Web 服务引用”节点下面,右键单击 "Stockservice" 节点,然后从弹出式菜单中选择“编辑 Web 服务属性”。
    将打开“Web 服务客户端安全配置”对话框。
  3. 选中“启用消息级别安全功能”复选框。
  4. 在“安全机制”下面,从“请求”下拉列表中选择 "SAML-HolderOfKey"。
  5. 在“现有证书设置”下面,将“使用缺省密钥库”复选框保留为选中状态。

  6. 单击“确定”。

现在,您可以按照部署并运行项目中的说明继续部署并运行样例了。

返回页首


确保 Web 服务的安全:使用 UserNameToken 安全机制

在本方案中,我们将使用具有签名响应的 UserNameToken 安全配置文件,并使用缺省密钥库。为此,我们首先需要编辑访问管理器的标记配置文件,然后配置 Web 服务提供程序和客户端。

编辑 UserNameToken 配置文件:

  1. 在“运行环境”窗口中,展开 "Sun Java System Access Manager" 节点,然后展开“缺省实例”和“配置文件”节点。
  2. 选择 "UserNameToken" 节点,单击鼠标右键,然后选择“编辑”。
    将打开“编辑 UserNameToken 配置文件”对话框。
  3. 在“现有证书设置”下面,将“使用缺省密钥库”复选框保留为选中状态。
  4. 在“用户名标记配置文件信息”下面,单击“添加”按钮为 Web 服务客户端添加一个 UserNameToken 记录。
    将打开“添加用户”对话框。
  5. 在“用户名”字段中键入 sherry,在“口令”字段中键入 mypw,然后单击“确定”。

  6. 单击“确定”以关闭“编辑 UserNameToken 配置文件”对话框。

配置 Web 服务提供程序:

  1. 在“项目”窗口中,展开 "StockServer" 节点和“Web 服务”节点。
  2. 在“Web 服务”节点下面,右键单击 "stockservice" 节点,然后从弹出式菜单中选择“编辑 Web 服务属性”。
    将打开“Web 服务提供程序安全配置”对话框。
  3. 选中“启用消息级别安全功能”复选框。
  4. 在“安全机制”下面,从“请求”下拉列表中选择 "UserNameToken"。

  5. 单击“确定”。

配置 Web 服务客户端:

  1. 在“项目”窗口中,展开 "StockClient" 节点和“Web 服务引用”节点。
  2. 在“Web 服务引用”节点下面,右键单击 "Stockservice" 节点,然后从弹出式菜单中选择“编辑 Web 服务属性”。
    将打开“Web 服务客户端安全配置”对话框。
  3. 选中“启用消息级别安全功能”复选框。
  4. 在“安全机制”下面,从“请求”下拉列表中选择 "UserNameToken"。
  5. 在“用户名”字段中键入 sherry,在“口令”字段中键入 mypw
  6. 选中“验证响应”复选框。
  7. 在“现有证书设置”下面,将“使用缺省密钥库”复选框保留为选中状态。

  8. 单击“确定”。

现在,您可以按照部署并运行项目中的说明继续部署并运行样例了。

返回页首


部署并运行项目

  1. 在“项目”窗口中,右键单击 "StockServer" 项目节点,然后选择“部署项目”。
    IDE 将执行以下操作:
    • 启动应用服务器(如果尚未启动)。
    • 生成 StockServer 项目。您可以在“输出”窗口中看到生成结果。
    • server.war 部署到应用服务器上。
  2. 在“项目”窗口中,右键单击 "StockClient" 项目节点,然后选择“运行项目”。
    IDE 将执行以下操作:
    • 生成 StockClient 项目。您可以在“输出”窗口中看到生成结果。
    • client.war 部署到应用服务器上。
    • 在浏览器中打开应用程序
    • 请确保在浏览器中打开以下 URL:
      http://localhost:8080/stockclient/

  3. 单击 "Submit"。

返回页首

浏览日志文件

本部分中的说明是可选的。对于需要查看日志文件中的更改的用户,这些说明将会很有用。

  1. 在继续执行下一步之前,请启用最详细的日志记录级别。
    请按照更改应用服务器上的安全级别中的说明进行操作。
  2. 在“项目”窗口中,右键单击 "StockClient" 项目节点,然后从弹出式菜单中选择“运行项目”。
  3. 在以下目录中,打开应用服务器日志文件 (server.log):application-server-installation-directory\domains\domain1\logs
    如果在安装过程中接受了缺省值,则该目录应为 C:\Sun\AppServer\domains\domain1\logs
  4. 请注意日志文件中的更改。
    已更改的日志文件显示模块正在使用配置面板中定义的方法。
    下面的链接提供了日志文件修改部分的样例。

返回页首

其他配置任务

本部分提供了您可能需要执行的其他配置任务的相关信息。

添加应用服务器

  1. 在“运行环境”窗口中,右键单击“服务器”节点,然后从弹出式菜单中选择“添加服务器”。
    将打开“添加服务器实例”对话框。
  2. 在“选择服务器”页中,从“服务器”下拉列表中选择 "Sun Java System Application Server"。
  3. (可选)在“名称”字段中,接受缺省值,或键入要用来在 IDE 中标识服务器的名称。
  4. 单击“下一步”。
    将打开“平台文件夹位置”页。
  5. 在“平台位置”字段中,使用“浏览”按钮导航并选择应用服务器的安装位置。
    如果在安装过程中接受了缺省值,则该位置应为 C:\Sun\Appserver
  6. 选择“注册本地缺省域”单选按钮。
  7. 单击“下一步”。
  8. 提供域管理员的用户名和口令。
    如果在安装过程中接受了缺省值,则用户名应为 admin,口令为 adminadmin
  9. 单击“完成”。

返回页首

验证访问管理器安装的配置

  1. 启动应用服务器。
  2. 在“运行环境”窗口中,展开 "Sun Java System Access Manager" 节点。
  3. 右键单击“缺省实例”节点,然后选择“查看管理控制台”。
    将启动一个新的浏览器会话,该会话指向以下 URL:http://localhost:8080/amserver
    此外,还将打开 Sun Java System Access Manager 登录页,表明访问管理器服务器正在运行。

返回页首

未安装在端口 8080 上的应用服务器的配置信息

如果 Sun Java System Application Server 安装是在 8080 以外的端口上完成的,则必须执行额外的配置步骤,如下所示。

  1. 在“项目”窗口中,展开 "StockClient" >“Web 页”> "WEB-INF" 和 "wsdl",然后在编辑器中打开 stock.wsdl 文件。
  2. 单击“源”按钮以切换至该文件的“源”视图。
  3. 滚动到文件的底部并找到以下行:
    <soap:address location="http://localhost:8080/stockservice/stockservice" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/"/>
  4. 将值 8080 替换为安装应用服务器时所用的端口号。
  5. 保存所做的更改并关闭该文件。

返回页首

更改应用服务器上的安全级别

  1. 在“运行环境”窗口中,右键单击 "Sun Java System Application Server 9" 节点,然后选择“查看管理控制台”。
  2. 键入 admin 作为用户名,键入 adminadmin 作为口令。
  3. 在左侧的导航框架中,单击“应用服务器”链接。
  4. 在右侧的框架中,单击“日志记录”标签,然后单击“日志级别”标签。

    应用服务器管理控制台,“日志级别”标签,单击以放大

  5. 滚动到页面底部,将“安全”设置为“最详细”。

    应用服务器管理控制台,“安全”设置,单击以放大

  6. 单击“保存”按钮,然后注销。

返回页首


疑难解答

本部分将为您可能遇到的问题提供有关解决方法的信息。

调用客户端时抛出异常

在调用客户端时,它在浏览器上抛出了以下异常:

Caught an exception java.rmi.ServerException: JAXRPCSERVLET28: Missing port information

出现此异常的原因可能是:

  • 为客户端选择的安全机制不在服务器支持的机制列表中。在这种情况下,请确保为客户端和服务器选择了相同的安全机制。

参考资料

返回页首


小结

在本教程中,您使用了 NetBeans Enterprise Pack 5.5 将基于 SAML 和 UserNameToken 的验证添加到了应用程序中。本教程向您说明了 NetBeans 提供的安全验证的简单易用性,因为您只需使用 Web 服务客户端和提供程序安全配置向导就可以实现这些安全机制,并不需要您深入了解 SAML!



返回页首


Bookmark this page

del.icio.us furl simpy slashdot technorati digg
Companion
Projects:
MySQL Database Server   Open JDK: an Open SourceJDK   GlassFish Community: an Open Source Application Server    Mobile & Embedded Community    Open Solaris   java.net - The Source for Java Technology Collaboration   Virtual Box - full virtualizer  Open ESB - The Open Enterprise Service Bus Powered by