调用WebService时加入身份验证,以拒绝未授权的访问
2010-08-19 16:22
597 查看
众所周知,WebService是为企业需求提供的在线应用服务,其他公司或应用软件能够通过Internet来访问并使用这项在线服务。但在有些时候的某些应用服务不希望被未授权访问,那么此时我们可以一下几种方法来实现身份验证。
方法一:在WebService中引入SoapHeader
加入一个服务用于测试:
至此我们想要的需要通过身份验证的服务配置好了,下面让我们进行一些测试,新建一个webForm在Page_Load中:
当运行这个WebForm时,如果用户名和密码是正确的我们将看到:
This is BanLao's Test Application For SoapHeader. @CopyRight By BanLao 2010
否则
无效的身份验证,请重试!
方法二:Web Service以Session方式验证
调用该服务,
当运行这个WebForm时,如果用户名和密码是正确的我们将看到:
This is BanLao's Test Application For Session. @CopyRight By BanLao 2010
否则
无效的身份验证,请重试!
注:如果需要多个合法用户,可以在WebService中声明判断即可~
方法一:在WebService中引入SoapHeader
#region 配置登录标头 /// <summary> /// Code CreateBy BanLao /// </summary> public class MySoapHeader : SoapHeader { private string strUserName = string.Empty; private string strPassWord = string.Empty; public MySoapHeader() { } public MySoapHeader(string username, string password) { this.strUserName = username; this.strPassWord = password; } #region 构造 用户名|密码 /// <summary> /// 用户名 /// </summary> public string UserName { get { return strUserName; } set { strUserName = value; } } /// <summary> /// 密码 /// </summary> public string PassWord { get { return strPassWord; } set { strPassWord = value; } } #endregion #region 检测是否正确登录 /// <summary> /// 检测是否正确登录 /// </summary> /// <returns></returns> public bool CheckLogin() { if (strUserName == "合法登录名" && strPassWord == "合法登录密码") { return true; } else { return false; } } #endregion } #endregion
加入一个服务用于测试:
#region 测试连接 [System.Web.Services.Protocols.SoapHeader("myHeader")] [WebMethod(Description = "判断用户是否开通", EnableSession = true)] public string _GetValue(string strInputValue) { if (myHeader.CheckLogin()) { string strReturnValue = strInputValue + "@CopyRight By BanLao 2010"; return strReturnValue; } else { return "无效的身份验证,请重试!"; } } #endregion
至此我们想要的需要通过身份验证的服务配置好了,下面让我们进行一些测试,新建一个webForm在Page_Load中:
WebLogon.MySoapHeader myHeader = new WebLogon.MySoapHeader(); myHeader.UserName = "约定的合法用户"; myHeader.PassWord = "约定的合法密码"; WebLogon.Service This_Service = new WebLogon.Service(); This_Service.MySoapHeaderValue = myHeader; Response.Write(This_Service._GetValue("This is BanLao's Test Application For SoapHeader. "));
当运行这个WebForm时,如果用户名和密码是正确的我们将看到:
This is BanLao's Test Application For SoapHeader. @CopyRight By BanLao 2010
否则
无效的身份验证,请重试!
方法二:Web Service以Session方式验证
[WebMethod(Description = "检测是否正确登录", EnableSession = true)] public bool CheckLogin(string strUserName, string strPassword) { if (strUserName.Equals("admin") && strPassword.Equals("123456")) { Session["LoginState"] = true; } else { Session["LoginState"] = false; } return (bool)Session["LoginState"]; } #region 测试连接 [WebMethod(Description = "测试连接", EnableSession = true)] public string _GetValue(string strInputValue) { if (Session["LoginState"] == null || Session["LoginState"].Equals(false)) { return "无效的身份验证,请重试!"; } else { string strReturnValue = strInputValue + "@CopyRight By BanLao 2010"; return strReturnValue; } } #endregion
调用该服务,
WebLogon.Service This_Service = new WebLogon.Service(); This_Service.CookieContainer = new System.Net.CookieContainer(); if (This_Service.CheckLogin("admin", "123456")) { Response.Write(This_Service._GetValue("This is BanLao's Test Application For Session. ")); }
当运行这个WebForm时,如果用户名和密码是正确的我们将看到:
This is BanLao's Test Application For Session. @CopyRight By BanLao 2010
否则
无效的身份验证,请重试!
注:如果需要多个合法用户,可以在WebService中声明判断即可~
相关文章推荐
- 调用WebService时加入身份验证,以拒绝未授权的访问
- 调用WebService时加入身份验证,以拒绝未授权的访问
- 调用WebService时加入身份验证,以拒绝未授权的访问
- 调用WebService时加入身份验证,以拒绝未授权的访问
- 调用WebService时加入身份验证,以拒绝未授权的访问
- 调用WebService时加入身份验证,以拒绝未授权的访问
- 调用WebService时加入身份验证,以拒绝未授权的访问
- 调用WebService时加入身份验证
- WebService安全 身份验证与访问控制
- WebService:Axis客户端调用需要身份验证的CXF服务
- webservice加入账号验证调用
- android下身份验证方式调用webservice
- js调用webservice:通过通过SOAP Header身份验证
- js调用webservice 并构造SOAP进行身份验证
- 动态调用Webservice 支持Soapheader身份验证(转)
- 调用webservice接口时出现401错误 添加身份验证
- 使用AXIS调用需要身份验证的WebService
- c#调用Java的webservice出现身份验证失败的解决方案
- 64位操作系统(Windows 2008 R2 X64)ASP.NET 调用32位Excel,word 出现401 – 未授权: 由于凭据无效,访问被拒绝。
- android调用webservice发送header身份验证不成功