使用 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 的验证。为此,我们
回到顶部
未来计划
回到顶部
>> 更多身份文档