java webservice 用户验证 (服务端 + 客户端)

说明:在网上找了一堆 handler验证的东东,试验了一下,没成功。

现在换了一种方式:在 tomcat的配置文件中添加用户角色和用户信息

             然后在 webservice的项目配置文件中增加对应的角色。从而达到 用户验证的目的。

开发环境: MyEclipse 10, Tomcat 7

参考:http://www.fengfly.com/plus/view-210099-1.html

 

先晒一下效果图:

 

以下是具体操作过程:

一, Server端代码

二, Client端的代码 

三, Tomcat的配置文件 及 Server端的配置

四,修改Client端调用webservice的方法

================================================

 

一, Server端代码

1, 在 MyEclipse 10中 新建一WebService项目:WsAuthServer

1),  ITest.java

 

[java]  view plain copy
  1. package com.Server;  
  2.   
  3. import javax.jws.WebMethod;  
  4. import javax.jws.WebService;  
  5. import javax.jws.soap.*;  
  6. import javax.jws.soap.SOAPBinding.Style;  
  7.   
  8. @WebService  
  9. @SOAPBinding(style = Style.RPC)  
  10. public interface ITest {  
  11.          @WebMethod  
  12.          public String SayHello(String name);  
  13. }  

2),  Test.java

 

 

[java]  view plain copy
  1. package com.Server;  
  2.   
  3. import javax.jws.WebService;  
  4.    
  5. @WebService(endpointInterface = "com.Server.ITest")  
  6. public class Test implements ITest {  
  7.       
  8.     @Override  
  9.     public String SayHello(String name) {  
  10.               return "Hello: " + name;  
  11.     }  
  12.       
  13. }  


3), 让MyEclipse 自动生成WebService

 

          注意:如果 是jax-ws方式创建的webservice, 必须 加入JAX-WS 相关的2个包。

    加入方法:项目名 右键 --> Build Path --> Add Libraies --> MyEclipse Libraries --> 拉到最下面 ,选中 JAX-WS的2个jar包

        

           如果 发布失败,检查 WebRoot\WEB-INF目录下的sun-jaxws.xml文件:

 

[java]  view plain copy
  1. <?xml version = "1.0"?>  
  2. <endpoints version="2.0"  
  3.     xmlns="http://java.sun.com/xml/ns/jax-ws/ri/runtime">  
  4.     <endpoint name="TestPort"  
  5.         implementation="com.Server.TestDelegate"  
  6.         url-pattern="/TestPort">  
  7.     </endpoint></endpoints>  

 

 

         如果发布成功,我们可以通过这个URL在浏览器中访问:http://localhost:8080/WsAuthServer/TestPort?wsdl

 

二, Client端的代码 

1,在MyEclipse 10 中 新建一个project: WsAuthClient

1), 新建一个 WebServiceClient, 把 刚才的webservice 通过url 方式引入 其中,按MyEclipse提示会自动生成一堆代码。

                  

 

2), 新建一个 test.java

             在 main方法中粘进如下代码:

 

[java]  view plain copy
  1. TestService service = new TestService();  
  2. ITest portType = service.getTestPort();  
  3. portType.sayHello("JASON");  

         运行,会得到:Result=>Hello: JASON

 

         至此,不需要用户验证的server端和client端已完成。 但我们的主题是 需要加入用户验证,所以我们还得继续下面的步骤。

 

三, Tomcat的配置文件 及 Server端的配置

1,tomcat配置用户角色及用户信息。

我这里是 tomcat7, 找到 Tomcat 7.0\conf 目录下的 tomcat-users.xml 文件.

 

[html]  view plain copy
  1. <?xml version='1.0' encoding='utf-8'?>  
  2. <tomcat-users>  
  3.   <role rolename="WsOperator"/>  
  4.   <user username="TomcatWs" password="你的密码(自己设定)" roles="WsOperator"/>  
  5. </tomcat-users>  

     2,server端配置web.xml

 

      WsAuthServer 项目 的 WebRoot\WEB-INFO目录下的web.xml 

     加入如下内容:

 

[html]  view plain copy
  1. <security-role>  
  2.   <description>Normal operator user</description>  
  3.   <role-name>WsOperator</role-name>  
  4. </security-role>  
  5. <security-constraint>  
  6.   <web-resource-collection>  
  7.     <web-resource-name>Operator Roles Security</web-resource-name>  
  8.     <url-pattern>/TestPort</url-pattern>  
  9.   </web-resource-collection>  
  10.   <auth-constraint>  
  11.     <role-name>WsOperator</role-name>  
  12.   </auth-constraint>  
  13.   <user-data-constraint>  
  14.     <transport-guarantee>NONE</transport-guarantee>  
  15.   </user-data-constraint>  
  16. </security-constraint>  
  17. <login-config>  
  18.   <auth-method>BASIC</auth-method>  
  19. </login-config>  

       将server端的webservice重新发布一次,并重启 tomcat。

 

       再通过浏览器访问:http://localhost:8080/WsAuthServer/TestPort?wsdl,会让你验证。说明刚才的配置生效了。

 

四,修改Client端调用webservice的方法

        回到client端,重新run一下main中的方法,发现会报错,这时,client端调用webservice的方法需要重新写:

 

[java]  view plain copy
  1. package com.TEST;  
  2.   
  3. import java.net.URL;  
  4. import javax.xml.namespace.QName;  
  5. import javax.xml.ws.BindingProvider;  
  6. import javax.xml.ws.Service;  
  7.     
  8. import com.server.*;  
  9.    
  10. public class test {  
  11.   
  12.     /** 
  13.      * @param args 
  14.      */  
  15.     public static void main(String[] args) {  
  16.        
  17.         final String WS_URL = "file:C:/Program Files/Apache Software Foundation/Tomcat 7.0/webapps/WsAuthServer/WEB-INF/wsdl/TestService.wsdl";  
  18.         final String S_URL = "http://localhost:8080/WsAuthServer/TestPort?wsdl";  
  19.    
  20.         URL url;  
  21.         try {  
  22.              url = new URL(WS_URL);  
  23.           
  24.              QName qname = new QName("http://Server.com/","TestService");  
  25.              Service service = Service.create(url, qname);  
  26.              ITest port=service.getPort(ITest.class);  
  27.              BindingProvider bp = (BindingProvider) port;  
  28.              bp.getRequestContext().put(BindingProvider.USERNAME_PROPERTY,"TomcatWs");  
  29.              bp.getRequestContext().put(BindingProvider.PASSWORD_PROPERTY, "111");  
  30.              bp.getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY,S_URL);  
  31.              String rtnMessage = port.sayHello("JASON");  
  32.              System.out.println("Result=>" + rtnMessage);  
  33.            
  34.         } catch (Exception e) {  
  35.             System.out.println("error");  
  36.             System.out.println(e.getMessage());  
  37.         }  
  38.            
  39.     }  
  40.   
  41. }  

          RUN一遍,得到如下信息:

 

    error
request requires HTTP authentication: Unauthorized

         如果把 下面的111 换成你自己的密码,又会得到 Result=>Hello: JASON

[java]  view plain copy
  1. bp.getRequestContext().put(BindingProvider.PASSWORD_PROPERTY, "111");  

 

 

补充:PC的client端还有另外一种写法:

  

[java]  view plain copy
  1. final String WS_URL = "file:C:/Program Files/Apache Software Foundation/Tomcat 7.0/webapps/WsAuthServer/WEB-INF/wsdl/TestService.wsdl";  
  2.     final String S_URL = "http://localhost:8080/WsAuthServer/TestPort?wsdl";  
  3.        
  4.     URL url;  
  5.     try {  
  6.          url = new URL(WS_URL);  
  7.   
  8.          QName qname = new QName("http://Server.com/","TestService");  
  9.          TestService service = new TestService(url, qname);  
  10.          TestDelegate test = service.getTestPort();  
  11.            
  12.          BindingProvider bp = (BindingProvider) test;  
  13.          bp.getRequestContext().put(BindingProvider.USERNAME_PROPERTY,"TomcatWs");  
  14.          bp.getRequestContext().put(BindingProvider.PASSWORD_PROPERTY, "你的密码");  
  15.          bp.getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY,S_URL);  
  16.              
  17.          String rtnMessage = test.sayHello("JASON");  
  18.          System.out.println("Result=>" + rtnMessage);  
  19.           
  20.          /*  
  21.          rtnMessage = test.sumCalc(23, 423); 
  22.          System.out.println("Result=>" + rtnMessage);  
  23.           
  24.          rtnMessage = test.getCurrentServerTime(); 
  25.          System.out.println("Result=>" + rtnMessage); */  
  26.             
  27.         /* BindingProvider bp = (BindingProvider) service; 
  28.             Map<String,Object> context = bp.getRequestContext(); 
  29.  
  30.             context.put(BindingProvider.USERNAME_PROPERTY, "myusername"); 
  31.             context.put(BindingProvider.PASSWORD_PROPERTY, "mypassword");*/  
  32.    
  33.     } catch(Exception ex)  
  34.     {  
  35.         System.out.println(ex.getMessage());  
  36.     }  
  37.       
  38.     System.out.println("the end.");  

 

至此, 一个完整的用户验证结束。非常感谢。

 

内容来源于 小红提技术博客,http://www.xiaohongti.com/ 转载请保留地址,尊重版权。

webService添加basic验证 webService添加basic验证,为了WebService的安全,将webservice添加basic验证,用户在调用时需要提供授权信息进行调用 立即下载

相关推荐

SAP LSMW数据批导操作手册及跨客户端传输方法(涉及默认值配置,及多余字段如何删除)

SAP LSMW数据批导操作手册及跨客户端传输方法

我好像病了的博客 6089

java端点_Java-JAXWS —如何更改端点地址

我是PayPal集成的新手,我不确定Adaptive Payment api。但是,我们有特权使用GetVerifiedStatus方法检查是否在PayPal中具有帐户的特定电子邮件ID。请使用下面的沙箱wsdl URL验证电子邮件网址:[https://svcs.sandbox.paypal.com/AdaptiveAccounts?wsdl]回应如下2015-07-20T23:42:46.66...

weixin_35760923的博客 344

香橙派5B-RK3588-NPU内核升级至0.9.8:RKLLM多模态部署实战

本文详细介绍了香橙派5B-RK3588设备NPU内核升级至0.9.8版本的完整流程,重点讲解了升级的必要性、两种升级方案(预编译包安装与自行编译内核)以及RKLLM SDK的安装配置。通过实战演示多模态模型转换与推理,显著提升AI计算性能,为嵌入式AI部署提供实用指南。

salt9的博客 1027

为webservice上加身份验证

在前面的基础上加上身份验证。          只需在服务端与客户端的调用之前后知添加拦截器即可:         服务端:         package com.webservice.cxf.test; import javax.xml.ws.Endpoint; import org.apache.cxf.jaxws.EndpointImpl; import com.webserv

xwstonny10的专栏 1060

音频DSP开发中的‘隐藏关卡’:那些SigmaStudio未公开的模块计算秘籍

本文深入探讨音频DSP开发中SigmaStudio未公开的模块计算秘籍,重点解析动态范围控制、均衡器参数映射和混响算法优化等核心模块计算公式。通过实际案例揭示如何利用这些非官方技巧提升音频质量与系统性能,为ADI DSP开发者提供宝贵的实战经验。

water的专栏 911

【机器人】线性方程最小二乘解法对机械臂DH参数进行标定

1.前言 看了一篇文章,觉得里面的DH参数标定法讲的很清晰,便使用Matlab复现了一下,效果还可以,特写此文记录。 2.原理 2.1.误差最佳值的最小二乘计算 有研究结果表明:几乎95%的机器人位置误差都是由机器人内部运动学的不准确描述引起的,所以对DH模型参数进行标定是很有必要的。 DH参数物理含义:选自《机器人学、机器视觉与控制-Matlab基础》 当DH参数确定后,我们...

要恰饭得嘛 1万+

Java调用WebService方法总结(1-7)

Java调用WebService方法总结(1)--准备工作 WebService是一种跨编程语言、跨操作系统平台的远程调用技术,已存在很多年了,很多接口也都是通过WebService方式来发布的;本系列文章主要介绍Java调用WebService的各种方法,使用在线的中文简体字<->繁体字转换服务(http://www.webxml.com.cn/WebServices/TraditionalSimplifiedWebService.asmx)作为测试服务端,使用其中的简体字转换为繁体字方法t

codeinglife的博客 438

从图片到3D模型:用Tripo+Unity打造AI建模流水线(避坑指南)

本文详细介绍了如何利用Tripo和Unity构建AI驱动的3D建模流水线,从图片到3D模型的高效转换。通过文生模型和图生模型的双模系统,开发者可以大幅提升建模效率,适用于游戏开发和数字内容创作。文章还提供了环境配置、图片预处理、批量生成等实用技巧,帮助开发者避开常见陷阱。

weixin_27024175的博客 617

java webservice用户验证_java webservice 用户验证 (服务端 + 客户端)

说明:在网上找了一堆 handler验证的东东,试验了一下,没成功。现在换了一种方式:在 tomcat的配置文件中添加用户角色和用户信息然后在 webservice的项目配置文件中增加对应的角色。从而达到 用户验证的目的。开发环境: MyEclipse 10, Tomcat 7参考:http://www.fengfly.com/plus/view-210099-1.html先晒一下效果图:以下是具...

weixin_35089715的博客 702

Coze 上 OpenClaw 完整使用攻略(零代码 + 24 小时在线 + 飞书 / 微信接入)

Coze(扣子)是目前国内零门槛部署 OpenClaw 最友好的平台,无需服务器、不用命令行,5 分钟即可拥有可执行本地 / 云端任务的 AI 助手,还能一键发布到飞书、微信、钉钉等 IM。

hy行者勇哥的博客 2924

SST专题(2-2)MMC-SST 输入级的工作原理及数学模型

本文研究了MMC-SST和iMMC-SST的电路结构及工作原理。系统由前级MMC电路和后级DC/DC电路组成,MMC负责电能转换和能量存储,DC/DC电路进行电压电流调节。重点分析了半桥型子模块(SM)的开关组态和工作原理,建立了平均值模型,推导了上下桥臂电压方程和环流特性。研究表明,通过合理控制子模块充放电模态可维持端口电压平衡,上下桥臂电压调控可影响网侧功率吸收,而环流特性对中压直流侧电压具有重要影响。

嵌入式老牛的博客 773

[已解决]:java webservice 用户验证 (服务端 + 客户端)

说明:在网上找了一堆 handler验证的东东,试验了一下,没成功。 现在换了一种方式:在 tomcat的配置文件中添加用户角色和用户信息              然后在 webservice的项目配置文件中增加对应的角色。从而达到 用户验证的目的。 开发环境: MyEclipse 10, Tomcat 7 先晒一下效果图: 以下是具体操作过程: 一, Ser

keenweiwei的专栏 3万+

RK3568 Android14 移远GNSS卫星导航模组LC760Z GPS北斗定位模块调试

Rockchip RK3568 作为一款高性能、低功耗的国产SoC,被广泛应用于工业网关、车载中控和智能手持终端等领域。在这些应用场景中,位置服务(Location Service) 往往是不可或缺的功能。本文将详细记录如何集成GPS模组到 RK3568 开发板上,通过 UART(串口)接口集成通用的 GPS 模块(如 移远LC760Z 或 EC20 4G 模块自带的 GPS 功能也差不多),并实现数据的解析与上层应用对接。

qq_33427070的博客 1414

java webservice用户名密码_WebService 用户名密码验证

在项目开发的过程中,WebService是经常要用的,当调用WebService方法时,需要经过服务的验证才可以调用,一般就是用户名/密码验证,还有一个就是证书.下面程序使用的是用户名/密码的方式,很简单的一个程序.项目截图:先看服务端的代码(ws_Service)MySoapHeader.cs 这里通过继承SoapHeader实现对用户名/密码的验证public class MySoapHe...

weixin_39846378的博客 2460

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

java webservice 密码_关于webservice的带有用户名和密码验证的方法调用

直接到代码服务端代码:有两个类,一个是定义用户名密码的类,一个是定义webservice方法的类定义用户名密码的类:using System;using System.Collections.Generic;using System.Web;namespace WebService1{public class YanZheng:System.Web.Services.Protocols.SoapH...

weixin_39932458的博客 2649

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

java xfire webservice 异步_java(xfire)调用java编写的webservice

webservice服务端基于xfire,至于如何创建基于xfire的服务端,网上有很多文章就不再阐述。服务端pojo:public class GroupInfo implements Serializable{private static final long serialVersionUID = 7646885719123155790L;private int groupId; ...

weixin_32485965的博客 135

C#调用java-ws(带身份验证功能)

java服务端: 服务接口: @WebService @SOAPBinding(style = Style.RPC) public interface HelloWorld{ @WebMethod String getHelloWorldAsString(); } 服务实现: @WebService(endpointInterface = "com.mkyong.ws.Hel

tomatozq的专栏 3453

ios 用xcode4.2开发 访问web service的功能

1。后台利用 cxf 构建一个web service服务。 HelloWorld.java [java] view plaincopyprint? /**  *   */  package com.alcor.jws.test;    import javax.jws.WebMethod;  import javax.jws.WebService;    impo

仰望星空 1474

用XFire做的带验证(Handler方式)的Webservice!!!(完整版)

<br />XFire是一个Webservice的框架。搞XFire两天了,前面也写了几篇文章,这里再写一个生产中的比较规范的demo,意图使人直接看到这篇文章也能实验成功。提供webservice接口给别人调用一般是给一个wsdl文件,这样别人就可以根据这个文件自动生成工具类进行调用。本文章带验证功能,生产中的webservice接口也不是知道地址就能调用的,最起码的一个账户、密码验证还是要的。废话不多说了!<br /> <br />简单分析下将要实现的功能,以便后面容易理解。调接口会拿到一个list,里

事后诸葛亮的程序人生(微信:zq9017197) 3856

Webservice_23_SOAP的基于契约优先开发用户管理_实现客户端

非常感谢孙浩老师。 先添加UserDaoImpl.java package cn.lichen.dao; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Set; import cn.lichen.entit

Li-Chen的专栏 1032

WebService的两种用户验证方式

年关将至,整理一下ME写的资料,发现有一篇未发表的,特共享出来,顺祝大家新年快乐了~~~ 1,使用SoapHeader传递和验证用户  Web Service端的代码:  1.1先创建一个继承自System.Web.Services.Protocols.SoapHeader     CredentialSoapHeader类:    public class Credentia...

weixin_34242331的博客 169

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

  下面文章详细说明了java怎么发布和调用一个webservice接口进行项目之间的数据交互。 文章地址:java使用XFire组件开发WebService入门实例     本文介绍 带验证的接口请求 : webservice不可能暴漏在公网上任意供别人调用,需要在服务端加入一定的验证措施。   webservice 服务端代码:   services.xml 代码  ...

51互联云 2186

使用axis1.4生成的WebService客户端增加用户验证信息

使用axis1.4生成的WebService客户端增加用户验证信息 文章目录使用axis1.4生成的WebService客户端增加用户验证信息第一步:调整客户端,增加请求头第二步:修改服务端代码第三步:执行客户端程序,发送请求第四步:通过TCP\IP Monitor监测报文TCP\IP Monitor工具的配置截图如下:修改客户端发送的端口执行客户端的请求 提示:由于本文涉及的代码在之前的文章中...

Jack_David的专栏 2769
上一篇: MySql+Memcached架构的问题
下一篇: (一)Android的内存管理机制
yufei_java
博客等级 码龄10年 18粉丝 60原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值