首页 > OOP语言 > 其它 > 正文

在WebSphere Application Server V7上通过JAX-WS实现消息级安全性
2012-08-22 18:18:09   来源:www.bianceng.cn   评论:0 点击:

暂时无描述信息

在WebSphere Application Server V7上通过JAX-WS 实现消息级安全性: 集成JEE授权 

在第 1 部分中,您了解了如何在 WebSphere Application Server V7 上使用 JAX-WS 提供消息级安全性,包括如何使用策略集对消息进行加密和签名,以及如何使用 UsernameToken 概要文件进行身份验证。在第 2 部分中,您将了解如何使用 SOAP 头部中传递的 UsernameToken 作为 JEE principal 在服务提供者中提供编程式的授权。

简介

Web Services Security (WS-Security) 是一种描述如何对 Web 服务实现消息级安全性的 OASIS 标准。具体来讲,WS-Security 描述如何实现机密性(例如加密)、完整性(例如数字签名)并在 SOAP 消息中传播用于身份验证的安全令牌(token)(例如用户名和密码)。然而,WS-Security 允许在 SOAP 消息中同时发送多个安全令牌,并且典型的 Java™ Platform, Enterprise Edition (JEE) Web 服务提供者实现根据来自其中一个安全令牌的 principal(身份)执行授权检查。在本文中,我们将描述如何配置 WebSphere 来选择 SOAP 消息的安全令牌作为 JEE principal,后者可用于作出授权决策。

注意,JEE 安全模型对 Web 容器和 EJB 容器支持声明式安全授权以及编程安全性。使用 Web 容器编程 API(比如 getUserPrincipal())和使用 EJB 容器编程 API(比如 getCallerPrincipal())之间存在着细微的差别。然而,本文的内容是讨论如何配置 Web 服务以将 SOAP 头部中的其中一个令牌指定为 JEE principal。一旦对这个 principal 进行了设置,您就可以像往常那样使用 JEE 安全模型和 WebSphere Base Security API。

您可以通过声明或编程的方式对 servlet 和 EJB 使用 JEE 安全模型以实现授权。然而,考虑到本文的意图,我们将演示一个基于 servlet 的 Web 服务,它将使用编程式 JEE API 获得 principal。您可以对样例进行扩展以使用 JEE 编程式 API 来对基于 servlet 的基础 Web 服务提供者执行编程式授权检查,或者为 EJB 配置基于角色的 JEE 消息级安全性。针对 web 容器以及 EJB 容器的 JEE 声明式和编程安全性已在其他资料中加以介绍,因此不会作为本文的重点。。我们的目标是演示如何支持消息级安全令牌的集成,以在 WebSphere Application Server 上结合使用 JEE 授权框架。

创建一个 JAX-WS 服务提供者

使用 Rational Application Developer (Application Developer) V7.5.2,创建一个新的动态 Web 项目,项目名为 HelloWorldProject。

接下来,使用 HelloWorldProvider 作为名称创建一个新的 Java 类,并将清单 1 的内容复制到这个新类。

清单 1. HelloWorldProvider.java

package com.ibm.dwexample;
               import javax.annotation.Resource;
               import javax.jws.WebService;
               import javax.xml.ws.WebServiceContext;
               @WebService public class
             HelloWorldProvider { @Resource WebServiceContext wsCtx;
              public
             String sayHello(String msg) { System.out.println("[provider]
             received " + msg); System.out.println("[provider] user = " +
             wsCtx.getUserPrincipal()); return "Hello " + msg; } }

HelloWorldProvider 代码中比较有趣的部分是 @Resource WebServiceContext。这行代码允许 JAX-WS 运行时注入 Web 服务上下文并使您能够从该上下文访问 JEE principal。然而,为了使代码在 Application Server 中实际返回正确的 principal,您必须在服务提供者绑定中配置 Caller;否则,结果可能会是 “Principal: /UNAUTHENTICATED*quot;”。

右键单击 HelloWorldProject 并选择 Run As => Run on Server。确保选中 Publishing settings for WebSphere Application Server 区段中的 Run server with resources on Server。

选择 WebSphere Application Server v7.0 服务器概要文件并单击 Finish。

相关热词搜索:

上一篇:在WebSphere Application Server Community Edition中配置Kerberos验证
下一篇:在WebSphere Application Server V7中为WS-Addressing提供JAX-WS 2.1支持

分享到: 收藏