调用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 测试连接
- [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 支持Soapheader身份验证(转)
封装的WebserviceHelp类: using System; using System.CodeDom; using System.CodeDom.Compiler; using System. ...
- 动态调用webservice时 ServiceDescriptionImporter类在vs2010无法引用的解决方法
[导读]ServiceDescriptionImporter是创建Web Service 时使用的类,它是引用继承System.Web.Services 当我将VS2005里写的一段代码放在VS201 ...
- 无法在Web服务器上启动调试,与Web服务器通信时出现身份验证错误
问题描述: 我使用的是修改hosts,模拟真实网址来进行调试的.具体是这样的:我修改hosts文件,把某个域名,如www.163.com映射为127.0.0.1,然后在IIS信息管理器中,创建一个网站 ...
- C#调用WebService时插入cookie
SOAPUI插入Cookie的方法 SOAP插入cookie的方法如下,点击Head,点击加号,然后直接设置就可以了. C#中调用webService时插入Cookie 由于调用的时候必须要带上coo ...
- Postman调用WebService,包括头验证部分
Postman调用WebService时,Body中选择Raw,最右端选择XML(txt/xml),然后把某个方法显示在页面的xml拷贝到请求框中即可,如下图: 以下是postman中的设置,
- WinForm客户端调用 WebService时 如何启用Session
WinForm客户端调用 WebService时 如何启用Session 摘自: http://www.cnblogs.com/swtseaman/archive/2011/04/18/2020176 ...
- ABAP调用WebService时日期类型问题
在使用ABAP调用WebService时, 提示CX_SY_CONVERSION_NO_DATE_TIME,意思是日期格式不能转化. 究其原因是ABAP里没有相应的数据类型与WebService描述里 ...
- 解决win7远程桌面连接时发生身份验证错误的方法
远程桌面连接,是我们比较常用的一个功能了,但有时突然不能用了,以下是我遇到该问题,并解决该问题的方法.连接时报的是“发生身份验证错误,要求的函数不受支持”,解决之后细想一下,该问题好像是在我在电脑上安 ...
- Web服务器使用基于纯文本表单的身份验证——.net(未完待续)
asp.net 表单验证方式 Asp.net的身份验证有有三种,分别是"Windows | Forms| Passport",其中又以Forms验证用的最多,也最灵活. 根据实际需 ...
随机推荐
- face morhper
图像变形背后的想法很简单.给定两个图像,我们想通过将图像和混合来创建中间图像.图像的混合和由参数控制的是在0和1之间().当为0时,变形看起来像,而当为1 时,变形看起来像.天真的,您可以在每个像素上 ...
- OptaPlanner - AI Constraint satisfaction solver
OptaPlanner - 国内版 Binghttps://cn.bing.com/search?q=OptaPlanner&qs=n&form=QBRE&sp=-1& ...
- Visual Studio 2019更新到16.1.6
Visual Studio 2019更新到16.1.6 此次更新主要是修复几个安全漏洞,如CVE-2019-1077(VS自动更新漏洞).CVE-2019-1075(ASP.net Core欺骗漏洞) ...
- evo:评测slam参数设置
zn@buaa:~$ evo_ape euroc m1/state_groundtruth_estimate0/data.csv pl-svo-master2/trajout.txt -angle_d ...
- Python3入门(十三)——常用内置模块之摘要模块hashlib/hmac
(1)hashlib hashlib提供了常见摘要算法:如MD5,SHA1等等 一个md5的加密示例如下: import hashlib m = hashlib.md5() m.update(&quo ...
- Qt编写数据可视化大屏界面电子看板13-基础版
一.前言 之前发布的Qt编写的可视化大屏电子看板系统,很多开发者比较感兴趣,也收到了很多反馈意见,纵观市面上的大屏系统,基本上都是B/S结构的web版本,需要在后台进行自定义配置模块,绑定数据源等,其 ...
- c#中多线程同步Lock(锁)的研究以及跨线程UI的操作 (转)
https://www.cnblogs.com/tommyheng/p/4104552.html 本文只针对C#中,多线程同步所用到的锁(lock)作为研究对象.由于想更直观的显示结果,所以,在做de ...
- idea使用快捷键ALT+/的时候,本来想在new后面创建对象,结果又出来一个new
我们知道eclipse的自动提示补齐new 后面的对象的快捷键是ALT+/,当我使用idea的时候,把idea的快捷键换成了eclipse的风格. 然而当我按下ALT+/的时候,就给我自动输入了一个n ...
- Node.js Sequelize如何实现数据库的读写分离
一.前言 在构建高并发的Web应用时,除了应用层要采取负载均衡方案外,数据库也要支持高可用和高并发性.使用较多的数据库优化方案是:通过主从复制(Master-Slave)的方式来同步数据,再通过读写分 ...
- upload-labs 上传漏洞靶场环境以及writeup
一个帮你总结所有类型的上传漏洞的靶场 https://github.com/c0ny1/upload-labs 靶场环境(基于phpstudy这个php集成环境) https://github.com ...