新闻建站cms系统、政府cms系统定制开发

广州网站建设公司-阅速公司

asp.net新闻发布系统、报纸数字报系统方案
/
http://www.ysneo.com/
广州网站建设公司
您当前位置:首页>ASP.NET MVC

ASP.NET MVC

WebService SoapHeader的使用

发布时间:2011/3/22 22:57:11  作者:  阅读:788  

广告:阿里云采购优惠专区

7.9 如何保证Web Service的安全

要以安全的方式访问Web服务方法,可以考虑以下安全措施:

是谁调用?--SoapHeader身份认证。

来自哪里?--访问IP认证。

加密传输 --SSL安全访问。

这些安全保护措施常常是配合使用的。

7.9.1 通过SoapHeader来增强Web Service的安全性

通过SoapHeader我们可以让具有指定用户口令的用户来访问我们的Web服务接口。(完整代码示例位置:光盘\code\ch07\WebAppClient\WebForm-SoapHeader.aspx)


1.Web Service实现步骤

(1)定义自己的SoapHeader派生类。


//<summary>
//定义自己的SoapHeader派生类
//</summary>
publicclassMySoapHeader:System.Web.Services.Protocols.SoapHeader
{
privatestring_UserID=string.Empty;
privatestring_PassWord=string.Empty;
//<summary>
//构造函数
//</summary>
publicMySoapHeader()
{
}
//<summary>
//构造函数
//</summary>
//<paramname="nUserID">用户ID</param>
//<paramname="nPassWord">加密后的密码</param>
publicMySoapHeader(stringnUserID,stringnPassWord)
{
Initial(nUserID,nPassWord);
}
#region属性
//<summary>
//用户名
//</summary>
publicstringUserID
{
get{return_UserID;}
set{_UserID=value;}
}
//<summary>
//加密后的密码
//</summary>
publicstringPassWord
{
get{return_PassWord;}
set{_PassWord=value;}
}
#endregion
#region方法
//<summary>
//初始化
//</summary>
//<paramname="nUserID">用户ID</param>
//<paramname="nPassWord">加密后的密码</param>
privatevoidInitial(stringnUserID,stringnPassWord)
{
UserID=nUserID;
PassWord=nPassWord;
}
//<summary>
//验证用户名密码是否正确
//</summary>
//<paramname="nUserID">用户ID</param>
//<paramname="nPassWord">加密后的密码</param>
//<paramname="nMsg">返回的错误信息</param>
//<returns>用户名密码是否正确</returns>
privateboolIsValid(stringnUserID,stringnPassWord,outstringnMsg)
{
nMsg="";
try
{
//判断用户名密码是否正确
if(nUserID=="admin"&&nPassWord=="admin")
{
returntrue;
}
else
{
nMsg="对不起,你无权调用此Web服务。";
returnfalse;
}
}
catch
{
nMsg="对不起,你无权调用此Web服务。";
returnfalse;
}
}
//<summary>
//验证用户名密码是否正确
//</summary>
//<returns>用户名密码是否正确</returns>
publicboolIsValid(outstringnMsg)
{
returnIsValid(_UserID,_PassWord,outnMsg);
}
#endregion
}


(2)添加基于SoapHeader验证的Web Service接口方法:


//<summary>
//通过SoapHeader来增强WebService的安全性
//</summary>
[WebService(Namespace="http://tempuri.org/")]
[WebServiceBinding(ConformsTo=WsiProfiles.BasicProfile1_1)]
[ToolboxItem(false)]
publicclassWebService_Soap:System.Web.Services.WebService
{
//声明Soap头实例
publicMySoapHeadermyHeader=newMySoapHeader();

//普通方法,不需要SoapHeader验证
[WebMethod(Description="根据产品编号查询产品的价格")]
publicstringGetProductPrice(stringProductId)
{
Productspro=newProducts();
returnpro.GetPrice(ProductId);
}
//需要SoapHeader验证
[SoapHeader("myHeader")]
[WebMethod(Description="根据产品编号查询产品的价格",EnableSession=true)]
publicstringGetProductPrice2(stringProductId)
{
stringmsg="";
//验证是否有权访问
if(!myHeader.IsValid(outmsg))
{
returnmsg;//返回错误信息
}
Productspro=newProducts();
returnpro.GetPrice(ProductId);
}
}


2.客户端调用具有SoapHeader的Web Service


//创建myService对象
ProductServiceSoap.WebService_Soapservice=

newProductServiceSoap.WebService_Soap();
//创建soap头对象
ProductServiceSoap.MySoapHeaderheader=newProductServiceSoap.MySoapHeader();
//设置soap头变量
header.PassWord="admin";
header.UserID="admin";
service.MySoapHeaderValue=header;
//调用web方法
stringstrPrice=service.GetProductPrice2("001");


通过SoapHeader对用户口令进行验证,只有授权的用户才可以使用该接口。确保了访问接口用户的安全性。

广告:阿里云新人采购专场

相关文章
WebService SoapHeader的使用
cms新闻系统购买咨询
扫描关注 广州阅速软件科技有限公司
扫描关注 广州阅速科技