WebService:Java client + .NET WSE 2.0 相关问题解决方案
2010-08-26 16:57
357 查看
最近在做为其他单位提供的数据服务的工作,因为不同单位的客户端都不一样,所以考虑到了以WebService的方式来提供数据接口。为了提高安全性,我们采用WSE安全认证方案。但受到服务器客观环境的限制,所以只能使用.net framework 1.1+wse2.0 sp3来做(建议服务端安装一些截包工具或学会打开输入输出及反馈的细节信息,这样便于调试和找到问题)。这里为什么是wse2.0后面会做描述。在客户端方面,我们模拟了C#客户端和Java客户端,并针对遇到的一些问题找到了一些解决方案,这里分享一下。
1.使用wse1.0,java客户端调用时,提示SOAP头信息不正确
1.使用wse1.0,java客户端调用时,提示SOAP头信息不正确
如果.net服务端采用了wse1.0,而且采用UsernameToken来验证时,当Java客户端也传递UsernameToke信息给服务端时,会提示“SOAP Header 不正确”的错误,但是.net 客户端没有任何问题,这就是为什么要使用WSE 2.0以上版本。
2.使用WSE2.0,java客户端调用时,提示“缺少Nonce和Created”节点
这种问题是因为java传递过去的SOAP信息不完整或无法让.NET服务端识别。解决的办法一是要么让服务端在传递过来SOAP信息中添加两个WSE节点,如:
至于在什么位置添加这些信息,通过微软的帮助文件找到了UsernameTokenManager的LoadTokenFromXml方法,在这里可以自定义SOAP信息。
二是让JAVA客户端修正传递的SOAP信息
3.其他错误
根据“详细”的“错误信息”和基本原理 去查找或自我改进。
我在做的过程中,遇到过很多问题,但是解决方案却很少,大部分都是老外的,而且也没有answer,总是根据一部分信息找来找去花了很多时间。总结起来,就是太过马虎,没有仔细看错误信息或去思考它的相关原理,而只是一味的依赖于去网上查找资料,结果都不如意。最后还是耐下心来查看帮助和思考它的工作机制时才发现原来可以这样做。
因为懒惰耽搁了好久才写,有些东西都忘了,所以写的简单,自我检讨。姑且先记录下来
2.使用WSE2.0,java客户端调用时,提示“缺少Nonce和Created”节点
这种问题是因为java传递过去的SOAP信息不完整或无法让.NET服务端识别。解决的办法一是要么让服务端在传递过来SOAP信息中添加两个WSE节点,如:
//添加Nonce节点 XmlNode node1 = doc.CreateNode(XmlNodeType.Element,"wsse:Nonce","http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"); node1.Prefix = "wsse" ; node1.InnerText = Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes(System.DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ss.fffZ"))) ; //添加Created节点 XmlNode node2 = doc.CreateNode(XmlNodeType.Element,"wsu:Created","http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"); node2.Prefix = "wsu" ; node2.InnerText = DateTime.UtcNow.ToString("yyyy-MM-ddTHH:mm:ss.fffZ");
至于在什么位置添加这些信息,通过微软的帮助文件找到了UsernameTokenManager的LoadTokenFromXml方法,在这里可以自定义SOAP信息。
二是让JAVA客户端修正传递的SOAP信息
3.其他错误
根据“详细”的“错误信息”和基本原理 去查找或自我改进。
我在做的过程中,遇到过很多问题,但是解决方案却很少,大部分都是老外的,而且也没有answer,总是根据一部分信息找来找去花了很多时间。总结起来,就是太过马虎,没有仔细看错误信息或去思考它的相关原理,而只是一味的依赖于去网上查找资料,结果都不如意。最后还是耐下心来查看帮助和思考它的工作机制时才发现原来可以这样做。
因为懒惰耽搁了好久才写,有些东西都忘了,所以写的简单,自我检讨。姑且先记录下来
相关文章推荐
- 如何从VB6迁移到VB.NET相关问题解决方案
- 关于java的JDK环境变量设置方法及相关问题解决方案
- 解决aps.net 2.0中ajax调用webservice的问题
- java中ftpClient.listFiles()结果为空问题解决方案
- 跨域问题解决方案(HttpClient安全跨域 & jsonp跨域)
- 解决java乱码问题方案
- javaWeb开发中关于eclipse等ide重新部署或重启项目等原因造成上传文件丢失问题解决方案
- linux下svn服务器搭建以及相关问题解决方案
- 解决tomcat服务器无法启动-java.net.BindException 端口被占用问题
- ASP.NET SESSION丢失问题解决方案
- 解决Caused by: java.sql.SQLRecoverableException: IO Error: Connection reset相关问题
- Linux出现java.net.UnknownHostException异常问题的解决办法
- ASP.NET 2.0 解决了 Code-Behind 需要控件声明同步的问题
- 【IT/Android解决方案】相关问题解决方案汇总
- 解决java.net.MalformedURLException: unknown protocol: c问题
- ASP.NET SESSION丢失问题解决方案
- linux相关问题解决方案
- 跨域问题解决方案(HttpClient安全跨域 & jsonp跨域)
- java 调用python的相关问题说明与解决