科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道应用软件基于XFire实施WS-Security(第二部分)

基于XFire实施WS-Security(第二部分)

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

对SOAP报文进行身份认证的方式很多,不过都是通过在SOAP报文头中添加一些安全凭证(Security Token)信息来完成的,主要包括以下一些身份凭证。

作者:闹市孤僧 2007年5月30日

关键字:

  • 评论
  • 分享微博
  • 分享邮件

客户端

现在服务端的Web Service服务已经需要对请求SOAP报文进行用户名/密码的认证了,客户端当然要进行相应的调整,以便在发送SOAP请求报文时添加用户名/密码的信息。

代码清单3 BbtForumServiceUTClient

package com.baobaotao.xfire.wss4j.client;

import java.lang.reflect.Proxy;

import java.net.MalformedURLException;

import java.util.Properties;

import org.apache.ws.security.WSConstants;

import org.apache.ws.security.handler.WSHandlerConstants;

import org.codehaus.xfire.client.Client;

import org.codehaus.xfire.client.XFireProxy;

import org.codehaus.xfire.client.XFireProxyFactory;

import org.codehaus.xfire.security.wss4j.WSS4JOutHandler;

import org.codehaus.xfire.service.Service;

import org.codehaus.xfire.service.binding.ObjectServiceFactory;

import org.codehaus.xfire.util.dom.DOMOutHandler;

import com.baobaotao.xfire.server.BbtForumService;

public class BbtForumServiceUTClient {

private static XFireProxyFactory serviceFactory = new XFireProxyFactory();

public static void main(String[] args) {

Service serviceModel = new ObjectServiceFactory().create(BbtForumService.class);

try {

① Web Service地址,注意服务名为BbtForumServiceUT

String serviceURL = "http://localhost:8080/baobaotao/service/BbtForumServiceUT";

BbtForumService service = (BbtForumService) serviceFactory.create(serviceModel,

serviceURL);

② 获取访问服务的客户端对象

Client client = ((XFireProxy)Proxy.getInvocationHandler(service)).getClient();

client.addOutHandler(new DOMOutHandler());③添加流模型和DOM模型转换的Handler

④以下代码添加一个Handler,通过属性对象的设置往SOAP头中添加用户名/密码的凭证

Properties properties = new Properties();

properties.setProperty(WSHandlerConstants.ACTION, ④-1动作

WSHandlerConstants.USERNAME_TOKEN);

properties.setProperty(WSHandlerConstants.PASSWORD_TYPE, ④-2密码类型

WSConstants.PW_DIGEST);

properties.setProperty(WSHandlerConstants.USER, "client");④-3指定用户

properties.setProperty(WSHandlerConstants.PW_CALLBACK_CLASS,④-4密码回调类

UtPasswordHandler.class.getName());

client.addOutHandler(new WSS4JOutHandler(properties));⑤添加WSS4JOutHandler

int count = service.getRefinedTopicCount(20);

System.out.println("count:"+count);

} catch (MalformedURLException e) {

e.printStackTrace();

}

}

}

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章