WebService简单验证:SoapHeader

本文介绍了一种在Webservice中实现认证与授权的方法,通过自定义SOAP头部信息来进行身份验证,确保只有合法用户能够调用Webservice。文章提供了具体的C#实现代码,并展示了如何在客户端进行调用。

使用soaphead方法可以在webservice的请求中增加头部信息,当有人调用我们的webservice时,可以通过查询这个请求的头部信息并验证来防止该软件以外的程序调用webservice

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;
using System.Data;

using GB.BLL;
using GB.Utility;
using System.Web.Services.Protocols;


public class AuthHeaderGB : SoapHeader
{
    
public string Username;
    
public string Password;
}  


/// <summary>
///UserService 的摘要说明
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo 
= WsiProfiles.BasicProfile1_1)]
//若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。 
 [System.Web.Script.Services.ScriptService]
public class UserService : System.Web.Services.WebService
{

    
public AuthHeaderGB sHeader;   


    
public UserService()
    {

        
//如果使用设计的组件,请取消注释以下行 
        
//InitializeComponent(); 
    }


    [WebMethod(Description 
= "获取用户信息")]
    [SoapHeader(
"sHeader")]   
    
public DataTable GetCompanyInfo(string userName)
    {
        
if (sHeader == null)
        {
            
return null;
        }
        
else
        {
            
string usr = sHeader.Username;
            
string pwd = sHeader.Password;

            
if (AuthenticateUser(usr, pwd))
            {
                CompanyBLL companyBLL 
= new CompanyBLL();
                DataTable dt 
= companyBLL.GetCompanyInfo(userName);
                
return dt;
            }
            
else
            {
                
return null;
            }
        }

        
    }

    
private bool AuthenticateUser(string usr, string pwd)
    {
        
if ((usr != null&&pwd != null&& (usr=="gbwebservice"&&pwd=="gbpwd"))
        {
            
return true;
        }
        
return false;
    }   

}

调用

 

WebService webservice = new WebService();
AuthHeaderGB auth 
= new AuthHeaderGB();
auth.Username 
= "gbwebservice";
auth.Password 
= "gbpwd";
webservice.AuthHeaderGBValue 
= auth;
DataTable dt
=auth.GetCompanyInfo("test");

 

转载于:https://www.cnblogs.com/hejunrex/archive/2011/04/28/2031969.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值