WebService 简单安全验证

简介: 原文:WebService 简单安全验证        最近新接了一个需要调用第三方WebService的项目,看到这个第三方WebService被调用的时候,需要授权用户名和密码,于是自己也想对WebService的安全授权这个方面进行了一下研究,以前调用的WebService大部分都是局域网内部调用,几乎没有什么权限需要增加的,今天借此机会,深入研究了一下,发现实现起来还是挺容易的。
原文: WebService 简单安全验证

        最近新接了一个需要调用第三方WebService的项目,看到这个第三方WebService被调用的时候,需要授权用户名和密码,于是自己也想对WebService的安全授权这个方面进行了一下研究,以前调用的WebService大部分都是局域网内部调用,几乎没有什么权限需要增加的,今天借此机会,深入研究了一下,发现实现起来还是挺容易的。

       基本原理就是利用SoapHeader 类,继承该类,然后在我们公布的方法上加上对应的标签,呵呵。现在做一个Demo程序,进行验证。我们首先衍生一个自己的子类,暂命名为SecurityHeader ,在该类中需要增加一个公共属性,详看如下代码

 

  public class SecurityHeader : SoapHeader

    {
        
public   string  SecurityKey
        {
            
get ;
            
set ;
        }
    }

 

      在WebService 中对该SoapHeader 的调用实现,也是比较容易理解的,详看一下代码就可以很好的理解了,代码中只需对SoapHeader进行验证就可以了。如果我们不增加SoapHeader,其实质就是普通的Public 类型的WebService 。调用的时候完全的公开的,不需要任何的验证信息。

 

  ///   <summary>
    
///  Summary description for Integration
    
///   </summary>
    [WebService(Namespace  =   " http://tempuri.org/ " )]
    [WebServiceBinding(ConformsTo 
=  WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(
false )]
    
//  To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. 
    
//  [System.Web.Script.Services.ScriptService]
     public   class  Integration : System.Web.Services.WebService
    {
        
public  SecurityHeader securityKey  =   new  SecurityHeader();

        [WebMethod]
        [SoapHeader(
" securityKey " )]
        
public   string  HelloWorld( string  show)
        {
            
if  (securityKey.SecurityKey.Equals( " 850 " ))
            {
                
return   " This is security webservice  "   +  show;
            }
            
else
            {
                
return   " Sorry,You didn't permissions! " ;
            }
        }

        [WebMethod]
        
public   string  HelloPanda( string  show)
        {
            
return   " This is public webservice   "   +  show;
        }

    } 

   

       验证程序代码如下:

     

  class  Program
    {
        
static   void  Main( string [] args)
        {
            PandaRGIntegration.SecurityHeader header 
=   new  PandaRG.Listrak.PandaRGIntegration.SecurityHeader();
            header.SecurityKey 
=   " 850 " ;

            PandaRGIntegration.IntegrationSoapClient client 
=   new  PandaRG.Listrak.PandaRGIntegration.IntegrationSoapClient();
            System.Console.WriteLine(client.HelloWorld(header,
" Vincent " ));
            System.Console.WriteLine(client.HelloPanda(
" Vincent " ));
            System.Console.Read();
        }
    }

 

调用结果: 


 

      当我们修改 header.SecurityKey = "8500"时结果

 

       整个完整例子到此实验完毕。感性趣的,也可以自己试验一下。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

目录
相关文章
|
移动开发 安全 网络安全
|
Web App开发 存储 安全
使用WSE实现Web Service安全----我的第一篇
原文: 使用WSE实现Web Service安全----我的第一篇 WSE(Web Services Enhancements)是微软为了使开发者通过.NET创建出更强大,更好用的Web Services而推出功能增强插件。
1310 0
|
Web App开发 安全 Shell
通向架构师的道路(第十四天)Axis2 Web Service安全之rampart
一、加密保护我们的web service传输 在上一天的教程中,我们讲了一个简单的基于” security-constraint”的以指定用户名和密码来保护一个Web Service以及如何用https对这个web service的通讯过程进行保护。
1163 0
|
Web App开发 安全 应用服务中间件
通向架构师的道路(第十三天)Axis2 Web Service安全初步
一、WSSecurity简述 安全的Web服务是Web服务成功的必要保证。但大家都知道,Web服务使用XML来进行数据交换,而XML在默认情况下是明文编码的;同时,大部分Web服务使用HTTP协议作为传输协议,同样,HTTP也是使用明文方式来传输数据的。
1156 0
|
安全 Java 网络架构
jax-ws之webservice security(安全)教程第一天
前言: 在前面的“5天学会jaxws-webservice教程”,我们讲了基本的jax-ws的使用。 Jax-ws是业界公认的标准的webservice,它已经成为了一个行业界标准,包括cxf,其实cxf也是调用的jax-ws为标准的基于spring的webservice框架。
1097 0
|
XML 安全 数据安全/隐私保护
jax-ws之webservice security(安全)教程第二天
前言: 第一天里说了如何用jax-ws去结合ssh框架。 在今天的教程中将会向大家详细讲述一个ws-security中的一个传统的”基于handler”来认证客户端传来的用户名密码的webservice. 客户端传过来一对用户名和密码,服务端进行认证。
1061 0
|
Web App开发 安全 网络性能优化
jax-ws之webservice security(安全)教程第三天
前言: 在今天的学习中,我们讲开始过渡到一个真正的websecurity例子。 第二天中我们知道了如何使用handler来处理客户端提交上来的用户名与密码,而在今天的学习中,我们将会使用服务端预先配置的用户名与密码来authenticate客户端提交上来的值。
1405 0
|
6月前
|
缓存 应用服务中间件 数据库
Python Web Service开发及优化
随着互联网的快速发展,Web服务已成为现代技术的核心。Python作为一种功能强大且易于学习的编程语言,在Web服务开发领域占据着重要地位。Python Web服务开发的重要性在于它能够提供高效、可扩展且易于维护的解决方案。本篇博客将探讨如何使用Python的Flask框架、Gunicorn WSGI服务器和Nginx网页服务器来实现高性能的Web服务。
|
6月前
|
XML Java 应用服务中间件
WebService - Axis2基于JAX-WS开发WebService并发布多个WebService
WebService - Axis2基于JAX-WS开发WebService并发布多个WebService
90 0
|
6月前
|
Java 应用服务中间件 Spring
WebService - Axis2使用services.xml进行开发server与client(未与Spring整合)
WebService - Axis2使用services.xml进行开发server与client(未与Spring整合)
147 0