调用WebService时加入身份验证,以拒绝未授权的访问
调用WebService时加入身份验证,以拒绝未授权的访问
众所周知,WebService是为企业需求提供的在线应用服务,其他公司或应用软件能够通过Internet来访问并使用这项在线服务。但在有些时候的某些应用服务不希望被未授权访问,那么此时我们可以一下几种方法来实现身份验证。
方法一:在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 配置登录标头 /// <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
#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. "));
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
[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. "));
- }
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中声明判断即可~
转载于:https://www.cnblogs.com/fx2008/archive/2012/06/02/2532139.html
调用WebService时加入身份验证,以拒绝未授权的访问相关推荐
- 动态调用Webservice 支持Soapheader身份验证(转)
封装的WebserviceHelp类: using System; using System.CodeDom; using System.CodeDom.Compiler; using System. ...
- android调用webservice发送header身份验证不成功
============问题描述============ 我的代码 SoapObject request = new SoapObject( "http://webservices.home ...
- C#调用Web Service时的身份验证
在项目开发,我们经常会使用WebService,但在使用WebService时我们经常会考虑以下问题:怎么防止别人访问我的 WebService?从哪里引用我的WebService?对于第一个问题,就 ...
- xml提示无法连接到远程服务器,异步调用WebService时,如何捕捉“无法连接远程服务器”异常...
在winform窗体中调用webservice,过程如下: ①Form1中弹出Form2 Form2 form2 = new Form2(); form2.ShowDialoag(); ②Form2中 ...
- 无法在Web服务器上启动调试。与Web服务器通信时出现身份验证错误
使用Visual Studio 2005(Visual Studio 2008亦存在此问题)调试设置了主机头的网站时出现如下错误信息: --------- Microsoft Visual Studi ...
- 使用kubectl访问Kubernetes集群时的身份验证和授权
全栈工程师开发手册 (作者:栾鹏) 架构系列文章 kubectl是日常访问和管理Kubernetes集群最为常用的工具. 当我们使用kubeadm成功引导启动(init)一个Kubernetes集群的 ...
- 远程桌面无法验证计算机身份验证,远程桌面时出现“身份验证错误,要求的函数不受支持”解决办法...
远程桌面时 "出现身份验证错误,要求的函数不受支持"的错误,如图所示: 这是由于本地客户端或者服务器端一方更新了CVE-2018-0886 的 CredSSP 补丁,而另外一方未安 ...
- win10系统远程连接时发生身份验证错误的解决方法
win10系统远程连接时发生身份验证错误的解决方法 解决这个问题有2个方法,百度了很久找到的: 1.在当前提示错误的电脑上操作,运行输入gpedit.msc 进入[打开组策略,依次展开"计算 ...
- 远程桌面时出现“身份验证错误,要求的函数不受支持”解决办法
远程桌面时 "出现身份验证错误,要求的函数不受支持"的错误,如图所示: 这是由于本地客户端或者服务器端一方更新了CVE-2018-0886 的 CredSSP 补丁,而另外一方未安 ...
最新文章
- Windows 系统下使用grep 命令
- HINSTANCE和HANDLE的区别
- 安卓开发面试题!带着问题深入学习Handler,进阶学习资料!
- linux 对硬盘重新分区,硬盘重新分区后,linux的硬盘表的重新设置
- 科技部部长:不唯论文,不是讲不要论文
- 树、森林、二叉树的转换
- ENVI/IDL实现每个波段信噪比计算
- html5 xml的区别,xhtml和html5区别 html与xhtml和xml有什么区别
- 键盘精灵 android,「安卓按键精灵」使用按键发送邮件
- 数据仓库 迁移 大数据_从数据仓库迁移到大数据平台的最佳实践
- 深信服php面经,深信服面经
- grpc-go源码剖析七十四之什么情况下服务器端通知客户端,双方关闭链接?(goAway帧处理逻辑)
- 企业邮箱哪个最好用?企业内部邮箱多少钱? 企业邮箱安全怎么选择?
- I.MX6Q(TQIMX6Q/TQE9)学习笔记——新版BSP之根文件系统挂载
- 在进化计算中,软件进行元基编码的新陈代谢方式 V0. 1. 1
- spring启动流程(一):启动流程概览
- 极光推送之java后台封装REST API
- unity编辑器扩展--Inspector自定义编辑
- java位运算符(、|、~、^、、 )
- Neural Baby Talk学习笔记
热门文章
- 毕业论文 | 单相AC-DC变换电路(附源代码与电路设计图及器件清单)电子设计大赛
- 北斗导航 | 监测和减轻空间天气对GNSS应用的影响
- C语言面向对象编程(一):封装与继承
- 计算机硬件 OR CX 1,计算机硬件第三章ppt
- tensorflow随笔-tf.decode_csv
- C指针原理(27)-编译基本原理-语法树及其实现7
- 荒唐!获得杰青的北大教授,竟被本科生质疑硕士毕业双非高校也能任教?
- 【数据竞赛】Kaggle神技:一项堪比Dropout的NN训练技巧!
- 【NLP】Github标星7.7k+:常见NLP模型的PyTorch代码实现
- 【NLP】全方位解读 | Facebook的搜索是怎么做的?