xifire webservice 接口 带头信息安全验证的实例

WebService之Soap服务入门详解 1.什么是webservice先来考虑一个问题,如果我们要在自己的程序里面展示天气预报,那怎么弄?正确的做法是我们发送一个请求到一个系统,他会给我们返回来天气情况。这个就是一个webservice。天气预报系统就相当于webservice的服务端,我们的系统就相当于客户端。2.如何调用别人发布的webservice 阅读详情

 

下面文章详细说明了java怎么发布和调用一个webservice接口进行项目之间的数据交互。

文章地址:java使用XFire组件开发WebService入门实例

 

 

本文介绍 带验证的接口请求 :

webservice不可能暴漏在公网上任意供别人调用,需要在服务端加入一定的验证措施。

 

webservice 服务端代码:

 

services.xml 代码

 

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://xfire.codehaus.org/config/1.0">

	<service>
		<name>HelloWebService</name>
		<serviceClass>
			com.sdjz.webservice.IHelloWebService
		</serviceClass>
		<implementationClass>
			com.sdjz.webservice.HelloWebServiceImpl
		</implementationClass>
		
		
		<!--注册监听处理器-->  
        <inHandlers>  
            <handler handlerClass="com.sdjz.webservice.checkclient.ClientAuthenticationHandler"></handler>  
        </inHandlers> 
        
        
		<style>wrapped</style>
		<use>literal</use>
		<scope>application</scope>
	</service></beans>

 

 

接口HelloWebService

 

package com.sdjz.webservice;
//Generated by MyEclipse

public interface IHelloWebService {
	/**
	 * example
	 * @param message
	 * @return
	 */
	public String example(String message);
	
}

 

 

接口实现HelloWebServiceImpl

 

 

package com.sdjz.webservice;
//Generated by MyEclipse

public class HelloWebServiceImpl implements IHelloWebService {
	
	public String example(String message) {
		return "Webservice server 返回的信息:"+message;
	}
	
}


接口请求前的验证 ClientAuthenticationHandler

 

package com.sdjz.webservice.checkclient;



import org.apache.log4j.Logger;
import org.codehaus.xfire.MessageContext;
import org.codehaus.xfire.exchange.InMessage;
import org.codehaus.xfire.fault.XFireFault;
import org.codehaus.xfire.handler.AbstractHandler;
import org.jdom.Element;
import org.jdom.Namespace;


/**
* XFire的回调的Handler,在XFire配置文件中配置
* Server端的认证模块,回调处理模块
* 
* ClientAuthHandler跟ClientAuthenticationHandler要一起用,或者都不用
* 
* @author Administrator
* 
*
*/
public class ClientAuthenticationHandler extends AbstractHandler {
    private static final Logger log = Logger.getLogger(ClientAuthenticationHandler.class);
    
    public void invoke(MessageContext context) throws Exception {
        
        log.info("#AuthenticationHandler is invoked");
    	
		if (context.getInMessage().getHeader() == null) {
			throw new org.codehaus.xfire.fault.XFireFault("请求必须包含验证信息",
					org.codehaus.xfire.fault.XFireFault.SENDER);
		}
		Element token = context.getInMessage().getHeader().getChild(
				"AuthenticationToken");
		if (token == null) {
			throw new org.codehaus.xfire.fault.XFireFault("请求必须包含身份验证信息",
					org.codehaus.xfire.fault.XFireFault.SENDER);
		}
		String username = token.getChild("Username").getValue();
		String password = token.getChild("Password").getValue();
        
        /**
         * 检查用户名密码是否正确
         */
        PasswordAuthenticationManager pamanager=new PasswordAuthenticationManager();
        if(!pamanager.authenticate(username,password))
            throw new XFireFault("Authentication Fail! Check username/password",
                    XFireFault.SENDER);

        
    }
}

 

用户名密码校验器(有数据库表可以写业务方法进行校验)

 

 

package com.sdjz.webservice.checkclient;


/**
 * 密码验证器
 * @author Administrator
 *
 */
public class PasswordAuthenticationManager {


	
	public  boolean authenticate(String username,String password){
		boolean flag=false;
		if("QQ908044593".equals(username)&&"908044593".equals(password)){
			flag=true;
		}
		return flag;
	}
}

 

 

 

********************************************以上是服务端代码*********************************************

webservice Client 代码

客户端认校验代码

 

package com.bean;

import org.apache.log4j.Logger;
import org.codehaus.xfire.MessageContext;
import org.codehaus.xfire.handler.AbstractHandler;
import org.jdom.Element;
/** 
* 客户端端的认证模块,回调处理模块 
* 每个需要认证的WebService方法都可以挂这个Handler 
*  
* 仅用于Demo,从解耦和易用性出发, 
* 没有跟Acegi结合,你可以任意扩展 
* 默认用户名/密码是QQ908044593/908044593 
*  
* ClientAuthHandler跟ClientAuthenticationHandler要一起用,或者都不用
*  
* @author Administrator
* 
* 
*/
public class ClientAuthHandler extends AbstractHandler {
	 
	
	private static final Logger log = Logger.getLogger(ClientAuthHandler.class); 
	private String username;
	private String password;
	
	public void invoke(MessageContext arg0) throws Exception {
		    Element el = new Element("header"); 
		    arg0.getOutMessage().setHeader(el); 
	        Element auth = new Element("AuthenticationToken"); 
	        Element username_el = new Element("Username"); 
	        username_el.addContent(username); 
	        Element password_el = new Element("Password"); 
	        password_el.addContent(password); 
	        auth.addContent(username_el); 
	        auth.addContent(password_el); 
	        el.addContent(auth); 

	}

	
	public String getUsername() {
		return username;
	}

	public void setUsername(String username) {
		this.username = username;
	}

	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}
}


客户端请求接口代码

 

 

package com.sdjz.webserviceclient;

import java.net.MalformedURLException;
import java.net.URL;

import org.codehaus.xfire.client.Client;

import com.bean.ClientAuthHandler;



public class WSClient {
	public static void main(String[] args) throws MalformedURLException, Exception{
		
		//最简单的demo
//		Client client = new Client(
//				new URL(
//						"http://localhost:9080/WebServiceServer/services/HelloWebService?wsdl"));
//		Object[] result = client.invoke("example",new Object[] { "web Hello World!" });
//		System.out.println(result[0]);
		
		
		
		
		
		
		//加入验证头信息
			Client 	client = new Client(
					new URL(
							"http://127.0.0.1:9080/WebServiceServer/services/HelloWebService?wsdl"));
		
			ClientAuthHandler wscname	=	new ClientAuthHandler();
			wscname.setUsername("QQ908044593");
			wscname.setPassword("908044593");
			client.addOutHandler(wscname);
			Object[] result = client.invoke("example",new Object[] { "Hello World!11" });
			System.out.println(result[0]);
		
		
		
	}
}


这样 就完成了 带验证的webservice接口实例。

 

WebService入门教程 这是一个关于WebService的学习文档,适合初学者。 立即下载

相关推荐

纯java调用ws-security+CXF实现的webservice安全接口

纯java调用ws-security+CXF实现的webservice安全接口

XFire实现身份验证(基于Xfire SOAP Header的WebService安全验证)

一、创建web services 工程(XFire),和平时的一样。 二、加入身份验证功能 1、首先编写服务端验证类,继承AbstractHandler类 package test; import org.codehaus.xfire.MessageContext; import

ob的专栏 8046

ArcGIS | 全球新冠肺炎地图数据下载和处理

ArcGIS

thinkpang的博客 2899

xfire实现对WebService调用接口用户验证

学习WebService进行中......  今天总结一下前段时间学习WebServices的经验和成果......hehe .........首先进行服务器端的编码 环境MyEclipse(服务器端)+Eclipse(客户端)+tomcat+jdk1.6+xFire 1....................创建工程 MyEclipse中集成了X

wangnetkang的专栏 1万+

RK3588设备树调试实战:解决NPU不加载、USB3.0识别异常与DP显示问题

本文深入探讨了RK3588设备树调试中的三大典型问题:NPU不加载、USB3.0识别异常与DP显示问题。通过详细的问题定位步骤、关键设备树修改和调试技巧,帮助开发者快速解决硬件适配中的挑战,提升RK3588平台的开发效率。

weixin_30576827的博客 474

Jetson设备EXT4文件系统修复实战:从superblock损坏到系统恢复

本文详细介绍了Jetson设备因异常断电等原因导致EXT4文件系统superblock损坏后的诊断与修复实战。通过从健康设备移植fsck工具、使用备份超级块等步骤,指导用户逐步恢复系统,并提供了数据备份与预防措施,帮助用户有效应对嵌入式AI开发中的存储故障。

theta的博客 590

Web Service实践——Xfire的ws-security用户名和密码安全验证

一、参照《Web Service实践之——XFire实例,以下面有说明》(本空间的文章)建立一个Xfire的应用; 二、引入的jar包: xfire-1.2.6的所有jar包(包括xfire-all-1.2.6.jar),下载地址:http://xfire.codehaus.org/Download wss4j-1.5.8.jar:下载地址:http://ws.apache.or...

helloklzs 511

【系统架构设计师】2025年下半年真题论文回忆版及写作要点

本文摘要围绕云原生数据库、性能测试、无服务器架构和秒杀场景等关键技术进行论述。云原生数据库通过容器化、微服务和自动化运维实现弹性扩展;性能测试需要规划测试场景并关注响应时间等关键指标;无服务器架构以事件驱动为核心,简化开发流程;秒杀场景需组合运用扩容、缓存、限流等技术应对高并发。这些技术方案为构建现代高可用系统提供了重要参考。

数据知道的博客 6155

spring2.5+xfire+ws-security

public static void main(String[] args) throws MalformedURLException { Service serviceModel = new ObjectServiceFactory().create(BbtForumSerivice.class); //web services地址 String serviceURL="http://172....

zw7534313的专栏 296

015、架构_配置文件_管理节点(proxymanager.ini)

该配置文件中的参数在后台配置,两种生效方式:*所有参数重启生效。*部分参数可以使用工具dbtool动态生效。动态生效命令为:dbtool-pm-load-config。配置文件“proxymanager.ini”用于设置元数据管理模块的信息。文件路径为“~/etc”。配置文件“proxymanager.ini”是普通的文本文件。默认值proxymanager-alarmconfutf8.txt。配置错误或不配置,PM无法连接MDS,无法服务。获取元数据失败超时处理时间。异常时请求启动对等回滚。

Oracle/MySQL 到 国产信创数据库|迁移 · 调优 · 信创替换 327

ESP32S3接入讯飞在线语音识别教程及配套源代码

本文介绍了如何使用ESP32-S3开发板实现讯飞在线语音识别功能。首先,需要准备硬件设备,包括ESP32-S3开发板、麦克风模块、MicroSD卡模块和扬声器模块。接着,安装Arduino IDE并配置ESP32-S3开发环境,注册讯飞开放平台账号并获取API凭证。然后,通过I2S接口连接麦克风模块,并编写代码实现语音录制、Base64编码、API请求和识别结果处理。代码包括初始化WiFi、麦克风、系统时间,以及录制语音、发送请求、解析响应等功能。最后,通过按键触发录音,并将识别结果输出到串口。

2401_88800025的博客 746

Web Service调用轻量级安全解决方案

1       概论 在Web Service标准规范中,安全性主要通过Soap Header来保证Web Service的授权使用,通过SSL(CA认证方式)来保证传输层数据的加密,防止网络侦听(用SSL而不用WS-Security是因为性能,虽然WS-Security有着很多SSL所无法做到的特性:不基于传输层,保障非点对点的安全传输,部分加密等等)。 但以上两种方法还是比较“重”,对

mentat的专栏 2263

Android面试指南及参考答案

【摘要】LesPark招聘Android开发工程师,要求3年以上经验,负责客户端功能开发与优化。岗位需掌握Java、多线程、网络编程(TCP/UDP/HTTP)及性能调试工具。面试重点考察:1)核心技术如网络协议选择(TCP可靠消息/UDP实时音视频)、内存泄漏分析;2)业务能力如图片懒加载三级缓存设计、启动速度优化案例;3)高阶系统原理如插件化框架设计;4)行为问题应对策略。建议候选人准备并发编程、JVM差异等深度知识,并量化项目优化成果,尤其关注社交应用相关的图片处理、实时通信等场景题。

郑伟强dev的专栏 799

JAVA Webservice服务发布、调用示例,WSS认证调用实现

JAVA发布Webservice服务和Webservice服务调用工具示例SpringBoot发布Webservice服务发布服务所需依赖编写待暴露的服务类发布服务Webservice服务的常规调用Webservice服务调用常见问题1、No operation was found with the name2、Unmarshalling Error: 意外的元素 (uri:"urn:hl7-org:v3", local:"return")。所需元素为<{urn:hl7-org:v3}HIPMessa

qq_26375455的博客 2440

Linux系统之部署经典魔塔小游戏

Linux系统之部署经典魔塔小游戏

jks212454的博客 1808

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

基于httpServer的web服务器简易搭建+基于jwt的token鉴权 身份验证【java/postman】

使用用户名和密码去请求,通过算法生成token,但是token不存储在服务器,随后直接把token返回给客户端。一个token分为三个部分,第一部分是Header,第二部分是用户相关信息,第三个部分是签名,相当于一把锁,前两个部分通过HMAC-SHA256算法生成一把钥匙。 需要判断钥匙和锁是否匹配,但是不会直接拿密钥和签名对比,而是重新计算出一个签名(锁),比较两把锁是否相同。......

qq_43129107的博客 942

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

RESTful Web Service 的安全(token 认证方式)以及性能

可扩展性(scalability)和可用性(availability)  custom token authentication 使用一个独一无二的标志,来标示每一次的数据请求。 这个标志有两种用法:1.它可以作为URI的 2.它可以加入到HTTP的请求头中。 @Path("/users/token={token}") public class UsersResource

yinxianluo的专栏 1万+

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

java连接siebel的webservice中的接口,包括请求头验证token

import java.net.URL; import javax.xml.soap.MessageFactory; import javax.xml.soap.MimeHeader; import javax.xml.soap.MimeHeaders; import javax.xml.soap.SOAPBody; import javax.xml.soap.SOAPConnection; im...

never_mm的博客 1079

webservice 安全认证请求头信息

java: import java.io.IOException; import java.util.Enumeration; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletEx...

u011791288的专栏 1296

webservice安全验证 java_基于Xfire SOAP Header的WebService安全验证教程 .

WebSerice是一种开放的web服务,任何人都可以访问,但我们有时候需要考虑只有付费用户才能使用WS,所以,我们就需要对WS加入安全验证机制,当然,可以利用防火墙的IP过滤,web应用的配置从最外层去隔离非法用户,但在内层,我们也可以使用SOAP Header的方式,由客户端发送验证数据,服务端验通过后基WS访问权限首先根据我的这篇Blog配置WS Server和WS Client,其中Cli...

weixin_42458217的博客 471

Java WebService 简单实例 方式一(生成类文件方式)

前言:朋友们开始以下教程前,请先看第五大点的注意事项,以避免不必要的重复操作。   一、准备工作(以下为本实例使用工具) 1、MyEclipse10.7.1 2、JDK 1.6.0_22   二、创建服务端 1、创建【Web Service Project】,命名为【TheService】。      2、创建【Class】类,命名为【ServiceHello】,位于【co...

不进则退 801

WebService客户端几种实现方式

1。发布一个webservice服务。 2。jdk原生调用方式和import生成代码 3。cxf两种调用方式。 4。axis和axis2调用方式 5。httpClient调用方式。 httpclient4.5.2 httpmime4.5.2

Java开发 7万+

自动生成的webservice客户端设置请求消息头信息

这里讲的头消息是指发送webservice请求的HTTP头信息(MIME 头信息),而不是SOAP报文里面的Header标签内容。

花生福的博客 1708

webservice的安全问题

                               webservice的安全问题     1 身份校验 1 在需要进行验证的接口中加入拦截器 2 对拦截器进行配置,对调用接口的身份进行拦截 3 usernameToken 2 信息加密 Wssj=webservice security for java      Wss4j安全策略 安全令...

stay hungry ! stay foolish! 4939

java mail发送邮件群发 带附件的发送(源代码+详细目录结构)java Email 发送实例

项目用到Java程序发送Email邮件从网上查了一些资料自己整理一个Demo 供大家参考 此邮件实现功能: 单发、群发邮件,可以带多个附件。欢迎拍砖

51互联云 6750
上一篇: 如何解决微软sqlserver 2005 数据库重装不上的各种问题
下一篇: sqlserver 2005 数据库异机备份
prefectjava
博客等级 码龄16年 26粉丝 101原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

prefectjava

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值