Web Service 安全性与 Java Platform, Enterprise Edition 安全性的关系

本文描述 Web Service 安全性(消息级安全性)模型和 Java™ Platform, Enterprise Edition (Java EE) 安全性模型之间的关系。它还包括 Java EE 基于角色的授权检查的相关信息。

要点: V5.x 与 V6 及更高版本的应用程序之间存在重要差别。本信息仅支持与 WebSphere® Application Server V6.0.x 及更高版本配合使用的 V5.x 应用程序。本信息不适用于 V6.0.x 和更高版本应用程序。

WebSphere Application Server 支持 Java 规范请求 (JSR) 101 和 JSR 109。JSR 101 和 109 定义 Java EE 体系结构的 Web Service,这样就可以在 Java EE 组件体系结构上开发和运行 Web Service。

要点: Web Service 安全性指的是“Web Service 安全性:SOAP 消息安全性”规范。有关更多信息,请参阅Web Service 安全性支持

使用 WebSphere Application Server 安全性(Java EE 基于角色的安全性)保护 Web Service。

您可以使用现有的安全基础结构:WebSphere Application Server、Java EE 基于角色的安全性和安全套接字层 (SSL) 传输层安全性来保护 Web Service。
图 1. 使用现有的安全基础结构的 SOAP 消息流使用现有的安全基础结构的 SOAP 消息流

可以使用 Java EE 基于角色的安全性来保护 Web Service 端口。Web Service 发送方使用 HTTP 头来发送基本认证数据。SSL (HTTPS) 可用于保护传输。当 WebSphere Application Server 接收 SOAP 消息,Web 容器验证用户(在本例中为 user1)并设置调用的安全上下文。设置好安全上下文后,SOAP 路由器 Servlet 发送请求到 Web Service 实现(实现可以是 JavaBeans 或企业 Bean 文件)。对于企业 Bean 实现,EJB 容器对 user1 的标识执行授权检查。

还可以使用 Java EE 角色保护 Web Service 端口。然后,在将 SOAP 请求分派到 Web Service 实现之前由 Web 容器执行授权。

使用消息级别的 Web Service 安全性保护 Web Service

您还可以使用消息级别的 Web Service 安全性来保护 Web Service。在这种情况下,您可数字地签署或加密消息的某一部分。Web Service 安全性还支持在 SOAP 消息中的安全性令牌传播。以下方案假设没有使用 Java EE 基于角色的安全性来保护 Web Service 端口,而使用 Java EE 基于角色的安全性来保护企业 Bean。

图 2. 使用 Web Service 安全性的 SOAP 消息流使用 Web Service 安全性的 SOAP 消息流

在这种情况下,不使用 Java EE 基于角色的安全性来保护 Web Service 端口。Web Service 引擎在客户机将消息发送到 Web Service 端口前处理 SOAP 消息。Web Service 安全性运行时对安全性约束执行操作,如在 SOAP 头中数字签名、加密或生成(和插入)安全性令牌。在这种情况下,使用 user1 和密码生成 <wsse:UsernameToken>。在服务器端(接收),Web Service 处理入局消息而 Web Service 安全性执行安全性约束。此执行包括确保消息被正确签署、正确加密和解密,以及用认证的标识认证安全性令牌和设置安全上下文。(在这种情况下,user1 是认证的标识。)最后,SOAP 消息被分派到 Web Service 实现(如果实现是企业 Bean 文件,那么 Enterprise JavaBeans (EJB) 容器对 user1 执行授权检查)。 在此方案中也可使用 SSL。

混合两者

第二种方案显示 Web Service 安全性可以实现 Java EE 基于角色的安全性。例如,可在传输级别启用 SSL 以提供安全通道。而且,如果 Web Service 实现是企业 Bean 文件,您可通过执行授权检查平衡基于 EJB 角色的授权。Web Service 安全性运行时平衡安全性基础结构以在安全上下文中设置认证标识。可以在下游调用中将认证的身份用于 Java EE 资源(或其他资源类型)。

将两个方案组合有敏感的结果。例如,如果 HTTP 传输方法发送 HTTP 头中带有 user1 和密码的基本的认证数据,但是 <wsse:UsernameToken>(其中包括 user99letmein)也被插入到 SOAP 头中。在前一个方案中,执行两个认证。一个认证由 Web 容器为认证 user1 而执行,而另一个由 Web Service 安全性为认证 user99 而执行。Web Service 安全性运行时在 Web 容器运行后运行,而 user99 是在安全上下文中设置的认证标识。

Web Service 安全性还可通过 Java 消息服务 (JMS) 传输将安全性令牌从 SOAP 的发送方传播到接收方。

Java EE 基于角色的授权检查

不存在关于 Web Service 授权的标准。但是,IBM 和 Microsoft Corporation 一起发布了名为 Security in a Web Services World: A Proposed Architecture and Roadmap 的 Web Service 安全性白皮书路线图,其中存在有关 WS-Authorization 规范的建议。但是,尚未发布 WS-Authorization 规范。

Web Service 安全性的现有实现基于 Java EE 规范或 Java 规范要求 (JSR) 109 规范的 Web Service。Web Service 安全性实现支持 Java EE 基于角色的授权检查。要获取概念信息,请参阅基于角色的授权。如果要开发需要进行方法级别的授权检查的 Web Service,那么必须使用无状态会话 Bean 来实现 Web Service。关于使用无状态会话 Bean 实现 Web Service 的更多信息,请根据您的编程模型参阅“使用 JAX-WS 实现 Web ervice”主题或“使用 JAX-RPC 实现 Web Service”主题。还请阅读保护企业 Bean 应用程序。如果要开发作为 Servlet 实现的 Web Service,那么可以在 Web 容器中使用粗颗粒度的授权或基于 URL 的授权。但是,在此情况下,无法使用 Web Service 安全性中的标识来进行授权检查。但是可以使用用于传输的标识。如果使用 SOAP over HTTP,那么标识在 HTTP 传输中。


指示主题类型的图标 概念主题



时间戳记图标 最近一次更新时间: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=cwbs_wssecurityj2ee
文件名:cwbs_wssecurityj2ee.html