webservice登录验证(怎么把webservice头验证加入到wsdl中)

本文目录
- 怎么把webservice头验证加入到wsdl中
- webservice怎么安全验证
- 如何在webservice中判断用户是否已经登录
- 用java 实现webservice 的用户验证是怎么个思路求大神指点下,谢谢!
- java调用webservice怎么添加 SoapHeader 做验证
- C#webservice如何做验证码
怎么把webservice头验证加入到wsdl中
首先,要创建一个继承自System.Web.Services.Protocols.SoapHeader的RequestSOAPHeader类,在其中添加UserName和Password两个属性,代码如下:
public class RequestSOAPHeader : System.Web.Services.Protocols. SoapHeader
{
public string user { get; set; }
public string password { get; set; }
}
生成的WebService代理类中设置成属性成员:
public partial class ISysNotifyTodoWebServiceService
{
public RequestSOAPHeader RequestSOAPHeader { get; set; }
}
在访问的WebService方法上方添加SOAPHeader的声明:
***隐藏网址***
public notifyTodoAppResult setTodoDone( notifyTodoRemoveContext arg0) {
object {
arg0});
return (( notifyTodoAppResult)(results));
}
webservice怎么安全验证
众所周知,WebService访问API是公开的,知道其URL者均可以研究与调用。那么,在只允许注册用户的WebService应用中,如何确保API访问和通信的安全性呢?本文所指的访问与通信安全性包括:
访问安全性:当前访问者是注册合法用户
通信安全性:客户端与服务器之间的消息即使被第三方窃取也不能解密
本文安全的基本思路是:
注册用户登录时使用RSA加密
Web API调用参数使用DES加密(速度快)
Web API调用中包含一个身份票据Ticket
Web服务器保存当前Ticket的Session,包括:Ticket、DES加密矢量、注册用户基本信息
1 WebService身份验证
确保注册用户的访问安全,需要如下步骤:1)产生一个当前客户端机器票据(Ticket);2)请求服务器RSA公钥(RSAPublicKey);3)使用RSA加密登录口令及发布DES加密矢量(DESCipherVector)。
1.1 产生客户端机器票据Ticket
一般而言,可以由客户端机器根据自己的MAC、CPU序列号等唯一标识产生一个本机器的Ticket字符串票据,其目的是:唯一标识当前客户端,防止其它机器模仿本客户端行为。
1.2 请求服务器公钥RSAPublicKey
客户端携带票据Ticket向服务器请求RSA公钥RSAPublicKey。在服务器端,一般采取如下策略产生RSA加密钥匙:
Application_Start时产生一个1024或更长的RSA加密钥匙对。如果服务器需要长久运行,那么Application_Start产生的RSA可能被破解,替代方案是在当前Session_Start时产生RSA加密钥匙对
保存当前票据对应的客户帐号对象,即:Session = AccountObject,在确认身份后在填写AccountObject具体内容:帐号、RSA加密钥匙对、DES加密矢量
完成上述步骤后,服务器将RSAPublicKey传回给客户端。
1.3 加密登录口令及DES加密矢量
客户端获得RSAPulbicKey后,产生自己的DES加密矢量DESCipherVector(至少要8位及以上,该加密矢量用于以后的常规通信消息加密,因为其速度比RSA快)。接着,客户端使用RSAPublicKey加密登录帐号、口令及DESCipherVector,连同Ticket,发送到服务器并请求身份验证。登录API格式如下:
public void Login(string Ticket, string cipherLongID, string cipherPassword);
如果验证成功,服务器将当前帐号信息、RSA钥匙、DESCipherVector等保存到会话Session中。
2 WebService通信安全性
2.1 加密WebService API参数
身份确认后,在客户端调用的WebService API中,必须包括参数Ticket,其它参数则均使用DESCipherVector加密。服务器端返回的消息也同样处理。例如,提交一个修改email的函数定义为:
public void ModifyEmail(string Ticket, string cipherEmai);
2.2 客户端解密消息
客户端接收到服务器返回消息后,先做解密操作,如果成功则进入下步处理。否则抛出加密信息异常。
2.3 服务器端解密消息
服务器接收到客户提交的API请求后,首先验证Ticket的合法性,即查找Session中是否有该票据以验证客户身份。然后,解密调用参数。如果成功则进入下不操作,否则返回操作异常消息给客户端。
需要指出,如果第三方截获全部会话消息,并保留其Ticket,此时服务器端仍然认可这个第三方消息。但是,第三方不能浏览,也不能修改调用API的参数内容,此时解密参数时将抛出异常。
上面探讨了一个基于加密的WebService访问与通信安全方法,即使第三方获取消息,不能查看原始内容,也不能修改内容,保证了WebService API的安全性。
如何在webservice中判断用户是否已经登录
这里教你利用xfire插件做服务端webservice
1.接口
Java代码
package org.BLLInterface;
public interface LoginService {
boolean LoginMethod(String username,String userpwd);
}
2.实现类
package org.Service;
Java代码
import org.BLLInterface.LoginService;
public class Login implements LoginService{
public Login(){}
public boolean LoginMethod(String username,String userpwd)
{
String USERNAME="jgx";
String USERPWD = "jgx";
if(username.equals(USERNAME)&&userpwd.equals(USERPWD))
{
return true;
}
return false;
}
}
用java 实现webservice 的用户验证是怎么个思路求大神指点下,谢谢!
简单说, WebService就是一些站点开放一些服务出来, 也可以是你自己开发的Service, 也就是一些方法, 通过URL,指定某一个方法名,发出请求,站点里的这个服务(方法),接到你的请求,根据传过来的参数,做一些处理, 然后把处理后的结果以XML形式返回来给你,你的程序就解析这些XML数据,然后显示出来或做其它操作。如果用他验证那就是通过生成唯一的加密数据,如用户那段的比较如果相等就可以通过。
java调用webservice怎么添加 SoapHeader 做验证
如果你是用axis生成的代码的话 去用CUX_0_WS_SERVER_PRG_BindingStub.java 这个类调用服务。
CUX_0_WS_SERVER_PRG_Service service=new CUX_0_WS_SERVER_PRG_ServiceLocator();
CUX_0_WS_SERVER_PRG_BindingStub stub=(CUX_0_WS_SERVER_PRG_BindingStub)service.CUX_0_WS_SERVER_PRGSOAP();
stub.setUsername("aaaa"); //连接的用户名
stub.setPassword("aaaa"); //连接的密码
stub.setHeader( dddd); //dddd是一个SOAPHeader 具体看对方wsdl要求
stub.invokefmsws(so.in);
不知道对方要求怎么验证 是在header中添加用户名和密码 还是在连接时需提供用户名密码。
所以把添加header 和 使用用户名 密码连接 验证都写了。 找对方确认下用那种方式然后自己试一下。
C#webservice如何做验证码
以下提供4位随机数验证码制作方法:
一、在网站根目录添加新项“web 服务”(同时会生成一个App_code),在app_code下的.cs文件页面中的整个,代码如下:
public static int GetRandom()
{
Random ran = new Random();
int getNum = ran.Next(1000, 9999);
return getNum;
}
二、在你排好版的页面中写代码,当然至少要有一个textbox输入验证码,一个label(Label1)显示验证码和一个button(Button1)刷新。代码如下:
protected void Page_Load(object sender, EventArgs e)
{
Label1.Text = new Random().Next(1000,9999).ToString();
}
protected void Button1_Click(object sender, EventArgs e)
{
Label1.Text = RandomService.GetRandom().ToString();
}
三、以上为制作方法,已经可以做出一个有刷新功能的页面了。
(提醒:涉及登录连接数据库的还要注意添加命名空间data.sqlclient、web security以及防止页面回调再刷新,用if(!Page.IsPostBack)等细节)

更多文章:
directive vue(如何在Vue中建立全局引用或者全局命令)
2026年5月6日 19:15
javaeclipse包的新建(用eclipse如何创建java工程)
2026年1月11日 08:30
c语言switch语句case后面接什么(c语言switch语句中case后面必须要接整型常量和字符型常量吗)
2025年10月26日 08:15
怎么把普通文件导入变成web项目(java项目怎么转成web项目)
2025年9月18日 16:00
在循环体内使用break语句(在循环结构中使用break语句,退出的是一层循环,还是多重循环呢可以给出一个简单且巧妙的例子吗)
2026年5月1日 00:00
position在css的属性(CSS中position属性详解)
2025年9月26日 23:45
amazed是什么牌子(amazing和amazed有什么区别)
2026年4月3日 15:00
周期函数值域的求法(已知函数的最小正周期为求;当时,求函数的值域.)
2025年11月30日 22:15
毕设做网站必须要用到ssm框架嘛(毕业设计做ssm还是app更难)
2026年3月31日 03:00
new directory(如何将威纶通tk6070ip触摸屏程序上传到电脑里)
2026年8月7日 01:45













