WebService基于SoapHeader实现安全认证
WebService基于SoapHeader实现安全认证
本文仅提供通过设置SoapHeader来控制非法用户对WebService的调用,如果是WebService建议使用WSE3.0来保护Web服 务,如果使用的是Viaual Studio 2008可以使用WCF,WCF里面提供了更多的服务认证方法。以下提供一种基于SoapHeader的自定义验证方式。
1.首先要自定义SoapHeader,须继承System.Web.Services.Protocols.SoapHeader 。
using System; using System.Collections.Generic; using System.Web; /// <summary> ///自定义的SoapHeader /// </summary> public class MySoapHeader : System.Web.Services.Protocols.SoapHeader { private string userName=string.Empty; private string passWord=string.Empty; /// <summary> /// 构造函数 /// </summary> public MySoapHeader() { } /// <summary> /// 构造函数 /// </summary> /// <param name="userName">用户名</param> /// <param name="passWord">密码</param> public MySoapHeader(string userName, string passWord) { this.userName = userName; this.passWord = passWord; } /// <summary> /// 获取或设置用户用户名 /// </summary> public string UserName { get { return userName; } set { userName = value; } } /// <summary> /// 获取或设置用户密码 /// </summary> public string PassWord { get { return passWord; } set { passWord = value; } } }
2.添加WebService,并编写相应代码。
using System; using System.Collections.Generic; using System.Web; using System.Web.Services; /// <summary> ///WebService 的摘要说明 /// </summary> [WebService(Namespace = "http://tempuri.org/")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] public class WebService : System.Web.Services.WebService { //声明Soap头实例 public MySoapHeader myHeader=new MySoapHeader(); [System.Web.Services.Protocols.SoapHeader("myHeader")] [WebMethod] public string HelloWord() { //可以通过存储在数据库中的用户与密码来验证 if (myHeader.UserName.Equals("houlei")&myHeader.PassWord.Equals("houlei")) { return "调用服务成功!"; } else { return "对不起,您没有权限调用此服务!"; } } }3.客户端调用,分别使用不设置SoapHeader与设置SoapHeader。
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace App { class Program { static void Main(string[] args) { localhost.WebService service = new localhost.WebService(); //没有设置SoapHeader的服务调用 Console.WriteLine("没有设置SoapHeader:" + service.HelloWord()); Console.WriteLine(); //将用户名与密码存入SoapHeader; localhost.MySoapHeader header = new localhost.MySoapHeader(); header.UserName = "houlei"; header.PassWord = "houlei"; service.MySoapHeaderValue = header; //设置SoapHeader的服务调用 Console.WriteLine("设置SoapHeader:" + service.HelloWord()); Console.Read(); } } }
4.运行应用程序,查看运行结果。
再看一下直接通过浏览器的调用结果。
点击HelloWord调用Web服务,结果如下:
点击“调用”按钮,得到从服务器返回调用结果。
添加自定义SoapHeader可以成功调用WebService,否则不能调用WebService,从而实现对Web Service的非法调用。这种方法存在一定的弊端,就是在每一个WebService方法上都要进行一下验证,如果用户名与密码存储在数据库中,每调用 一次WebService都要访问一次数据库进行用户名与密码的验证,对于频繁调用WebService来说,数据库压力很大。然而少量 WebService调用这种方式还是一种不错的选择。
(作者:侯垒)
相关推荐
WebService是基于XML(eXtensible Markup Language)的开放式网络服务接口,允许不同系统之间进行数据交换和交互。在Web服务中,SOAP(Simple Object Access Protocol)是用于传输信息的标准协议,它通过HTTP协议...
跨平台调用WebService时,正确处理SOAPHeader是确保服务安全性和功能完整性的关键。通过上述步骤,我们可以在.NET环境中成功调用由Java使用XFire框架发布的WebService,并且能够按照服务端的要求封装和传递必要的...
SoapHeader作为SOAP消息的一部分,常被用于传递额外的控制信息,如认证、授权等,因此,对它进行加密是确保服务安全的关键步骤。本文将深入探讨如何使用SoapHeader进行加密,以及案例中的申明和调用方法。 首先,让...
在Axis2中,可以通过`SOAPHeader`和`SOAPHeaderBlock`对象来实现。例如,如果你的SOAP Header需要包含认证信息,可以这样做: ```java OMFactory omFactory = OMAbstractFactory.getOMFactory(); OMElement ...
在Web服务领域,SOAP(Simple Object Access Protocol)是一种基于XML的协议,用于交换结构化和类型化的信息。SOAP Header是SOAP消息的一个重要组成部分,它允许传递与SOAP消息处理相关的元数据,例如安全性、事务...
在这个"soapHeader验证例子"中,我们将探讨如何使用Java和相关工具实现SOAP头验证。 首先,我们需要了解环境:MyEclipse 6.0是一个集成开发环境(IDE),专门针对Java EE应用,而Tomcat 6.x是一个流行的开源Java ...
这种机制虽然简单,但在实际应用中可能需要配合更复杂的认证和授权框架,如Windows身份验证、Forms身份验证或者基于令牌的身份验证,以增强安全性。此外,对于跨域调用,还需要考虑CORS策略和相应的配置。
综上所述,"WebService.zip"包含了一套完整的WebService开发示例,从服务端到客户端,涵盖了SOAP通信、Spring Boot集成、Tomcat的安全配置以及SoapHeader的使用。这些内容对于理解和实践WebService开发是非常有价值...
SOAP Header不是消息的主要部分,即SOAP Body,但它允许添加额外的信息,如安全认证、交易信息或路由指令。SOAP Header可以用来传递非业务数据,这些数据不直接影响业务逻辑,但对服务的执行环境或交互过程至关重要...
在本文中,我们将探讨一种基于SoapHeader的自定义安全验证方法,这种方法适用于Visual C++(VC)或者其他.NET平台的客户端调用WebService。 首先,让我们理解什么是SoapHeader。SoapHeader是SOAP消息的一部分,它...
ASP.NET中的基于SOAP头(SoapHeader)的Web服务安全机制是一种增强Web服务安全性的方法,主要目的是限制未经授权的访问和确保只有经过验证的调用者能够使用服务。在默认情况下,Web服务通常允许匿名访问,这可能导致...
如果Web服务端和客户端在不同的域或IP地址上,可能还会涉及到跨域安全和权限认证的问题。此外,在实际部署时还需要考虑网络环境、性能优化和安全加固等因素。 以上知识点总结了在Java中处理SOAPHEADER的Web服务请求...
这可以通过自定义消息处理器或者在SOAPHeader中添加安全信息来实现。 2. **使用KeyStore和TrustStore**:对于基于证书的认证,客户端需要加载自己的KeyStore,包含私钥和证书,以及服务器的TrustStore,包含服务器...
在本文中,我们将深入探讨SOAP Header的创建与解析,特别是在Java环境下如何实现。SOAP(Simple Object Access Protocol)...在Java环境下,利用JAX-WS提供的API可以方便地处理SOAP Header,实现安全、高效的数据交换。
WebService是一种基于互联网的、用于应用程序之间交互的开放式标准技术。它允许不同的应用程序之间共享数据和服务,不受操作系统、编程语言的限制。在本场景中,WebService被用来提供软件自动升级的功能。 2. **...
ASP.NET 是一种基于 .NET Framework 的服务器端编程技术,用于构建功能丰富的 web 应用程序。...同时,为了更好地管理安全性,可以考虑使用更安全的身份验证机制,如 Windows 集成身份验证或基于令牌的身份验证。
在Web服务领域,SOAP(Simple Object Access Protocol)是一种基于XML的协议,用于交换结构化和类型化的信息。当涉及到Web Service客户端与服务器之间的交互时,有时需要在SOAP消息中添加额外的信息,例如身份验证或...
对于更复杂的应用场景,例如ASP.NET中的身份验证、权限控制等,可以在Web服务中实现基于Forms认证的WebService应用,或者利用ASP.NET的`System.Web.Services.Protocols.SoapHeader`来添加自定义的安全机制,实现SOAP...
在本文中,我们将深入探讨如何使用Java API ...这个过程对于需要对SOAP请求进行额外处理,如添加安全令牌、实现特定逻辑或验证的场景非常有用。理解并熟练掌握这些概念和步骤,将有助于开发安全、灵活的Web服务客户端。
- `SOAPBody`用于添加业务数据,`SOAPHeader`可以添加认证或路由信息。 4. **发送SOAP请求**: - 创建`SOAPConnection`对象并调用其`call()`方法来发送SOAP请求并接收响应。 - `call()`方法接受一个`SOAPMessage...