使用 SAML 或 UserNameToken 配置文件确保 Web 服务的安全
由 Bob May 创建和维护
,2007 年 11 月 [修订号:V1-3]
本文适用于完整的 NetBeans IDE 6.0 发行版
本教程将介绍如何使用捆绑的访问管理器在 Web 服务的客户端和 Web 服务提供程序之间进行基于 SAML 和基于 UserNameToken 的验证,其中访问管理器支持应用服务器的 Web 服务客户端和服务器端容器所使用的 WS-Security 标准。
预计时间:40 分钟
目录
教程需求
NetBeans IDE 6.0 捆绑了所有必需的运行环境,从而使您可以开发基于身份验证的安全 Web 服务客户端和提供程序。这些运行时环境包括:
- Java Application Server SDK Update 3 Beta
- Sun Java System Access Manager 7.1 和 Sun Java System Policy Agent 2.2 for Web Services
在开始之前,确保对本节的系统要求有所了解。
前提条件
本教程假定您拥有 Java 和 Web 服务技术的基本知识或者具备相关编程经验。
本教程所需要的软件
开始之前,需要在您的计算机中安装以下软件:
- NetBeans 6.0
选择 Full Download 选项。
- Sun Java System Access Manager 7.1- 可从 the Java Application Platform SDK Update 2 或更高版本获得。(下载)
回到顶部
安装 Sun Java 系统访问管理器
如果之前已经安装并配置了访问管理器,请检查您的用户目录是否存在,如果存在,请在开始安装之前删除文件
[Your_Userdir]/AccessManager/AMConfig_opt_SUNWappserver_domains)domain1_applications_j2ee-modules_amserver_
。
要安装 Sun Java 系统访问管理器,首先必须确保安装了完整的 NetBeans IDE。接下来,
- 从 http://java.sun.com/javaee/downloads/index.jsp 获取 Java Application Platform SDK Update 2 或更高版本。
- 运行 Java SDK 安装程序,指定安装目录,并接受默认选项。
- 选择包含 Sun Java 系统访问管理器的插件。
- 继续运行安装程序,完成之后,启动服务器,并选择“完成”。
- 启动 IDE。
- 在“服务”选项卡中,选择“服务器”节点。右键单击 服务器 节点,然后从弹出菜单中选择“添加服务器”。此时将打开“添加服务器实例”对话框。
- 单击“下一步”。此时将打开“平台位置文件夹”页面。
- 在“平台位置”字段中,使用“浏览”按钮导航到包含刚才安装的 Java Application Platform SDK 的目录并选中。
- 单击“完成”。
- Sun Java 系统访问管理器将作为节点出现在刚才安装的应用服务器下的“服务”选项卡中。必须启动应用服务器,才能使用 Sun Java 系统访问管理器。
回到顶部
验证访问管理器安装的配置
- 在“服务”窗口中,展开 "Sun Java System Access Manager" 节点。
- 现在重新定向到“登录”页面,该页面立即在后续的登录中显示。可以登录到 Sun Java 系统访问管理器中。将打开“登录”页面,指示访问管理器服务器正在运行。
需要配置访问管理器,以正确运行。默认情况下,在第一次启动从 SDK 获得 Glassfish 服务器时配置访问管理器,但是如果需要,可以在以后重新配置。更多信息请参阅 [your_SDKGlassfish_location]/addons/README.html 文件。
回到顶部
配置教程环境
- 启动 IDE。
- 要验证是否在 IDE 中配置了 Sun Java System Application Server,请单击“运行环境”选项卡,然后展开“服务器”节点。
- 如果“服务器”节点不包含 "Sun Java System Application Server 9" 节点,请按照添加应用服务器中的步骤进行操作。
- 在“运行环境”窗口中,展开“服务器”节点,右键单击 "Sun Java System Application Server 9" 节点,然后从弹出菜单中选择“启动”。
等待以下消息出现在“输出”窗口中:
应用服务器启动完成。
当服务器处于运行状态时,IDE 将在 "Sun Java System Application Server 9" 节点的旁边显示一个绿色箭头标记。
注意:如果“启动”选项不可用,则说明服务器已在运行。
回到顶部
创建教程项目
两个教程项目是:StockQuoteServer 和 StockQuoteClient。
要创建 StockQuoteServer 项目:
- 从 IDE 的主菜单中,选择“文件”>“新建项目”。
- 在“类别”列表中,展开“示例”节点,然后选择 "Identity Blueprint" 节点。
- 在“项目”列表中,选择“股票服务”。
- 单击“下一步”。
- 接受默认的项目名称 (StockServer),但是可以选择更改项目位置。
- 单击 Finish 按钮。
要创建 StockQuoteClient 项目:
- 从 IDE 的主菜单中,选择“文件”>“新建项目”。
- 在“类别”列表中,展开“示例”节点,然后选择 "Identity Blueprint" 节点。
- 在“项目”列表中,选择“股票客户端”。
- 单击“下一步”。
- 接受默认项目名称 (StockClient) 和项目位置值。
- 单击 Finish 按钮。
“项目”窗口现在包含一个 Stock Client 项目节点。
回到顶部
确保 Web 服务的安全:使用 SAML-HolderOfKey 安全机制
在本方案中,我们将使用没有签名响应的 SAML-HolderOfKey 安全配置文件,并使用默认密钥库。为此,我们首先需要编辑访问管理器的标记配置文件,然后配置 Web 服务提供程序和客户端。
编辑 SAML-HolderOfKey 配置文件:
- 在“运行环境”窗口中,展开 "Sun Java System Access Manager" 节点,然后展开“默认实例”和“配置文件”节点。
- 选择 SAML-HolderOfKey 节点
- 右键单击并选择“编辑”。
将打开“编辑 SAML-HolderOfKey 配置文件”对话框。
- 清除“签名响应”复选框。
- 定位到“现有证书设置下面,并确保“使用默认密钥库”复选框被选中。
- 单击“确定”。


配置 Web 服务提供程序:
- 在“项目”窗口中,展开 "StockQuoteService" 项目节点和“Web 服务”节点。
- 定位到“Web 服务”节点,右键单击 "stockservice" 节点,然后从弹出菜单中选择“编辑 Web 服务属性”。此时将打开 Web Service Client Security Configuration 对话框。
- 选中 Enable Message Level Security 复选框。
- 定位到“请求”下拉列表中的“安全机制”,选择 "SAML-HolderOfKey"。
- 单击“确定”。
配置 Web 服务客户端:
- 在“项目”窗口中,展开 "StockQuoteClient" 节点和“Web 服务引用”节点。
- 定位到“Web 服务引用”节点,右键单击 "Stockservice" 节点,然后从弹出菜单中选择“编辑 Web 服务属性”。
此时将打开 Web Service Client Security Configuration 对话框。
- 选中 Enable Message Level Security 复选框。
- 在“安全机制”下面,从“请求”下拉列表中选择 "SAML-HolderOfKey"。
- 定位到“现有证书设置”。确保“使用默认密钥库”复选框为选中状态。

- 单击“确定”。
现在,您可以按照 部署并运行项目 中的说明继续部署并运行示例了。
回到顶部
确保 Web 服务的安全:使用 UserNameToken 安全机制
在本方案中,将使用具有签名响应的 UserNameToken 安全配置文件,并使用默认密钥库。为此,首先需要编辑访问管理器的标记配置文件,然后配置 Web 服务提供程序和客户端。
编辑 UserNameToken 配置文件:
- 在“运行环境”窗口中,展开 "Sun Java System Access Manager" 节点,然后展开“默认实例”和“配置文件”节点。
- 选择 "UserNameToken" 节点,单击鼠标右键,然后选择“编辑”。
将打开“编辑 UserNameToken 配置文件”对话框。
- 定位到“现有证书设置下面,并确保“使用默认密钥库”复选框被选中。
- 定位到“用户名标记配置文件信息”。单击“添加”按钮为 Web 服务客户端添加一个 UserNameToken 记录。
将打开“添加用户”对话框。
- 在“用户名”字段中键入 sherry,在“口令”字段中键入 mypw,然后单击“确定”。

- 单击“确定”以关闭“编辑 UserNameToken 配置文件”对话框。
配置 Web 服务提供程序:
- 在“项目”窗口中,展开 "StockQuoteService" 节点和“Web 服务”节点。
- 定位到 Web 服务 节点。右键单击 stockservice 节点,然后从弹出菜单中选择“编辑 Web 服务属性”。
将打开“Web 服务提供程序安全配置”对话框。
- 选中 Enable Message Level Security 复选框。
- 定位到“安全机制”,从“请求”下拉列表中选择 "UserNameToken"。

- 单击“确定”。
配置 Web 服务客户端:
- 在“项目”窗口中,展开 "StockClient" 节点和“Web 服务引用”节点。
- 定位到 Web 服务引用 节点。右键单击 stock service 节点,然后从弹出菜单中选择“编辑 Web 服务属性”。
此时将打开 Web Service Client Security Configuration 对话框。
- 选中 Enable Message Level Security 复选框。
- 定位到“安全机制”,从“请求”下拉列表中选择 "UserNameToken"。
- 在“用户名”字段中键入 sherry,在“口令”字段中键入 mypw。选中“验证响应”复选框。
- 选择“验证响应”复选框。
- 定位到“现有证书设置下面,并确保“使用默认密钥库”复选框被选中。

- 单击“确定”。
现在,您可以按照部署并运行项目中的说明继续部署并运行示例了。
回到顶部
部署并运行项目
- 在“项目”窗口中,右键单击 StockQuoteService 项目节点并选择“解除部署和部署项目”。
IDE 将执行以下操作:
- 启动应用服务器(如果尚未启动)。
- 生成 StockQuoteService 项目。您可以在“输出”窗口中看到生成结果。
- 将 server.war 部署到应用服务器上。
- 在“项目”窗口中,右键单击 "StockQuoteClient" 项目节点,然后选择“运行项目”。
IDE 将执行以下操作:
- 生成 StockQuoteClient 项目。您可以在“输出”窗口中看到生成结果。
- 将 client.war 部署到应用服务器上。
- 在浏览器中打开应用程序
- 确保 URL 字段始终显示:
http://localhost:8080/stockquoteclient/

- 单击“提交”。

可以单击显示的“查看 SOAP 消息”部分,查看与此请求关联的 SOAP 消息。
回到顶部
浏览日志文件
本部分中的说明是可选的。使用这些说明查看日志文件中的更改。
- 在继续执行下一步之前,请启用最详细的日志记录级别。
请按照更改应用服务器上的安全级别中的说明进行操作。
- 在“项目”窗口中,右键单击 "StockQuoteClient" 项目节点,然后从弹出菜单中选择“运行项目”。
- 在以下目录中,打开应用服务器日志文件(server.log):application-server-installation-directory\domains\domain1\logs.
如果在安装过程中接受了默认值,则窗口中显示 C:\Sun\AppServer\domains\domain1\logs。
- 请注意日志文件中的更改。
已更改的日志文件显示模块正在使用配置面板中定义的方法。
下面的链接提供了日志文件修改部分的示例。
回到顶部
其他配置任务
本部分提供了您可能需要执行的其他配置任务的相关信息。
回到顶部
未安装在端口 8080 上的应用服务器的配置信息
如果 Sun Java System Application Server 安装是在 8080 以外的端口上执行的,则必须执行额外的配置步骤,如下所示。
- 在“项目”窗口中,展开 "StockQuoteClient" >“Web 页”> "WEB-INF" 和 "wsdl",然后在编辑器中打开 stock.wsdl 文件。
- 单击“源”按钮以切换至该文件的“源”视图。
- 滚动到文件的底部并找到以下行:
<soap:address location="http://localhost:8080/stockservice/stockservice" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/"/>
- 将值 8080 替换为安装应用服务器时所用的端口号。
- 保存所做的更改并关闭该文件。
回到顶部
更改应用服务器上的安全级别
- 在“运行环境”窗口中,右键单击 "Sun Java System Application Server 9" 节点,然后选择“查看管理控制台”。
- 键入 admin 作为用户名,键入 adminadmin 作为口令。
- 在左侧的导航框架,单击“应用服务器”链接。
- 在右侧的框架中,单击“日志记录”选项卡,然后单击“日志级别”选项卡。

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

- 单击“保存”按钮,然后注销。
回到顶部
参考资料
回到顶部
结束语
在本教程中,学习了如何在 web 服务客户端和 web 服务提供者之间启用基于 SAML 和 UserNameToken 的验证。为此,我们
回到顶部
未来计划