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

机器人系统能用MQTT5.0代替ROS2吗? 更为灵活和友好的方案是通过把ROS(Robot Operating System)与MQTT(Message Queuing Telemetry Transport)协议相结合的解决方案,利用MQTT的轻量级、跨平台和广泛适用性特点,扩展ROS系统的通信能力,或将非ROS系统接入ROS网络。 阅读详情

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

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

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

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

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

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

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


1.Web Service实现步骤

  首先引入命名空间

  1. using System; 
  2. using System.Collections; 
  3. using System.ComponentModel; 
  4. using System.Data; 
  5. using System.Diagnostics; 
  6. using System.Web; 
  7. using System.Web.Services; 
  8. using System.Web.Services.Protocols;  //对soap Head引用添加的命名空间 

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

  1. public class MyHeader : System.Web.Services.Protocols.SoapHeader 
  2.     { 
  3.         private string _UserID = string.Empty; 
  4.         private string _PassWord = string.Empty; 
  5.  
  6.         /// <summary> 
  7.         /// 构造函数 
  8.         /// </summary> 
  9.         public MyHeader() 
  10.         { 
  11.  
  12.         } 
  13.  
  14.         /// <summary> 
  15.         /// 构造函数 
  16.         /// </summary> 
  17.         /// <param name="nUserID">用户ID</param> 
  18.         /// <param name="nPassWord">加密后的密码</param> 
  19.         public MyHeader(string nUserID, string nPassWord) 
  20.         { 
  21.             Initial(nUserID, nPassWord); 
  22.         } 
  23.         #region 属性 
  24.  
  25.         /// <summary> 
  26.         /// 用户名 
  27.         /// </summary> 
  28.         public string UserID 
  29.         { 
  30.             get { return _UserID; } 
  31.             set { _UserID = value; } 
  32.         } 
  33.  
  34.         /// <summary> 
  35.         /// 加密后的密码 
  36.         /// </summary> 
  37.         public string PassWord 
  38.         { 
  39.             get { return _PassWord; } 
  40.             set { _PassWord = value; } 
  41.         } 
  42.         #endregion 
  43.         #region 方法 
  44.         /// <summary> 
  45.         /// 初始化 
  46.         /// </summary> 
  47.         /// <param name="nUserID">用户ID</param> 
  48.         /// <param name="nPassWord">加密后的密码</param> 
  49.         public void Initial(string nUserID, string nPassWord) 
  50.         { 
  51.             UserID = nUserID; 
  52.             PassWord = nPassWord; 
  53.         } 
  54.  
  55.         /// <summary>         
  56.         /// 用户名密码是否正确 
  57.         /// </summary> 
  58.         /// <param name="nUserID">用户ID</param> 
  59.         /// <param name="nPassWord">加密后的密码</param> 
  60.         /// <param name="nMsg">返回的错误信息</param> 
  61.         /// <returns>用户名密码是否正确</returns> 
  62.         public bool IsValid(string nUserID, string nPassWord, out string nMsg) 
  63.         { 
  64.             nMsg = ""; 
  65.             try 
  66.             { 
  67.                 //判断用户名密码是否正确 
  68.                 if (nUserID == "admin" && nPassWord == "admin") 
  69.                 { 
  70.                     return true; 
  71.                 } 
  72.                 else 
  73.                 { 
  74.                     nMsg = "对不起,你无权调用此Web服务,可能有如下原因:/n 1.您的帐号被管理员禁用。/n 2.您的帐号密码不正确"; 
  75.                     return false; 
  76.                 } 
  77.             } 
  78.  
  79.             catch 
  80.             { 
  81.                 nMsg = "对不起,你无权调用此Web服务,可能有如下原因:/n 1.您的帐号被管理员禁用。/n 2.您的帐号密码不正确"; 
  82.                 return false; 
  83.             } 
  84.  
  85.         } 
  86.  
  87.         /// <summary> 
  88.         /// 用户名密码是否正确 
  89.         /// </summary> 
  90.         /// <returns>用户名密码是否正确</returns> 
  91.         public bool IsValid(out string nMsg) 
  92.         { 
  93.  
  94.             return IsValid(_UserID, _PassWord, out nMsg); 
  95.         } 
  96.         #endregion 
  97.     } 

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

  1. /// <summary> 
  2.     /// myService 的摘要说明 
  3.     /// </summary> 
  4.     //[WebService(Namespace="http://MyServer/MyWebServices/")] 
  5.     public class myService : System.Web.Services.WebService 
  6.     { 
  7.  
  8.         /// <summary> 
  9.         /// Soap头实例 
  10.         /// </summary> 
  11.         public MyHeader myHeader = new MyHeader();  //实例化SoapHead 
  12.  
  13.         public myService() 
  14.         { 
  15.             //CodeGenerated: 自动生成的代码,该调用是 ASP.NET Web 服务设计器所必需的 
  16.             InitializeComponent(); 
  17.         } 
  18.         #region 组件设计器生成的代码 
  19.         //Web 服务设计器所必需的 
  20.         private IContainer components = null; 
  21.  
  22.         /// <summary> 
  23.         /// 设计器支持所需的方法 - 不要使用代码编辑器修改 
  24.         /// 此方法的内容。 
  25.         /// </summary> 
  26.         private void InitializeComponent() 
  27.         { 
  28.  
  29.         } 
  30.  
  31.         /// <summary> 
  32.         /// 清理所有正在使用的资源 
  33.         /// </summary> 
  34.         protected override void Dispose(bool disposing) 
  35.         { 
  36.             if (disposing && components != null) 
  37.             { 
  38.                 components.Dispose(); 
  39.             } 
  40.             base.Dispose(disposing); 
  41.         } 
  42.         #endregion 
  43.         // WEB 服务示例 
  44.         // HelloWorld() 示例服务返回字符串 Hello World 
  45.         // 若要生成,请取消注释下列行,然后保存并生成项目 
  46.         // 若要测试此 Web 服务,请按 F5 键 
  47.  
  48.  
  49.         /// <summary> 
  50.         /// 正常调用的方法 
  51.         /// </summary> 
  52.         /// <returns></returns> 
  53.         [WebMethod] 
  54.         public string HelloWorld() 
  55.         { 
  56.             return "Hello World"; 
  57.         } 
  58.  
  59.         /// <summary> 
  60.         /// 需要验证的方法,添加SoapHeader标识 
  61.         /// </summary> 
  62.         /// <param name="contents"></param> 
  63.         /// <returns></returns> 
  64.         [SoapHeader("myHeader")] 
  65.         [WebMethod(Description = "HelloWord", EnableSession = true)] 
  66.         public string HelloWorld2(string contents) 
  67.         { 
  68.             string msg = ""; 
  69.             //验证是否有权访问 
  70.             if (!myHeader.IsValid(out msg)) 
  71.                 return msg; 
  72.  
  73.             return "Hello World:" + contents; 
  74.         } 
  75.     } 

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

  1. //创建myService对象 
  2. StudySoapHead.myService service =  new StudySoapHead.myService(); 
  3. //创建soap头对象 
  4. StudySoapHead.MyHeader header=new StudySoapHead.MyHeader(); 
  5. //设置soap头变量  
  6. header.PassWord = "admin";  
  7. header.UserID = "admin"; 
  8. service.myHeader = header; 
  9. //调用web 方法 
  10. Console.WriteLine(service.HelloWorld()); 
  11. Console.WriteLine(service.HelloWorld2("Valid request!")); 
  12. Console.Read(); 

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

强化学习-----DQN(Deep Q-network) DQN(Deep Q-Network)是一种基于深度学习和强化学习的算法,由DeepMind提出,用于解决离散动作空间下的马尔科夫决策过程(MDP)问题。它是首个成功将深度学习应用于解决强化学习任务的算法之一。DQN,即深度Q网络(Deep Q-network),是指基于深度学习的Q-Learing算法。那什么是Q-leaning?可以看上一篇文章Q-learning是一种经典的强化学习算法,用于解决马尔可夫决策过程(Markov Decision Process,MDP)中的控制问题。 阅读详情

相关推荐

单细胞转录组上游分析完整流程(超详细)

本指南详细介绍单细胞转录组数据分析流程,从10xGenomics平台数据出发,使用CellRanger工具完成从原始FASTQ文件到基因表达矩阵的全过程。内容涵盖:1) 环境准备与参考基因组获取;2) 测试数据下载;3) 数据质量检测方法;4) CellRanger核心流程详解;5) 结果解读;6) 下游分析衔接。同时提供开源替代方案kallisto|bustools的使用说明,并解答常见问题。适合单细胞转录组分析初学者快速掌握标准分析流程。

Rita_rr的博客 1160

36:第三章:开发通行证服务:19:拦截那些“想要访问【获得用户账户信息,接口】和【更改/完善用户信息,接口】的请求“,检查登录信息,校验通过后再放行;(使用【Spring MVC中的拦截器】来实现)

目录一:本篇博客合理性说明; 二:使用拦截器(interceptor),去拦截"那些想要访问【更改/完善用户信息,接口】、【获得用户基本信息,接口】的请求",检查登录信息,只有校验通过后才放行请求;1.在【api】接口工程中,创建UserTokenInterceptor拦截器类,去拦截请求,根据请求判断用户是登录状态;2.在【api】接口工程中,创建BaseInterceptor类,在其中编写一个工具方法,用于判断前端是否是登录状态;3.在【api】接口工程中,在InterceptorConfig类,去配置

小枯林的博客 516

PCF8591实战指南:从IIC通信到STM32的ADC/DAC配置(附完整代码)

本文详细介绍了PCF8591芯片在STM32开发中的实战应用,涵盖IIC通信协议、ADC/DAC配置及完整代码实现。通过解析DATA SHEET关键参数,提供硬件连接指南、控制字节配置技巧和常见问题解决方案,帮助开发者快速掌握这款8位模数/数模转换器的使用,实现精确的模拟信号处理。

y7z8a的博客 540

webservice加密,通过SoapHeader来增强Web Service的安全性

(通常webservice 加密都是加Token.其实就是在SOAP包的包头里面加个用户名和密码... 在C#封完包后,操作包头好了)   7.9  如何保证Web Service的安全 要以安全的方式访问Web服务方法,可以考虑以下安全措施: 是谁调用?--SoapHeader身份认证。 来自哪里?--访问IP认证。 加密传输 --SSL安全访问。 这些安全保护措施常常是配合使

yl_99的专栏 3978

linux 4.19在龙芯平台上编译出错解决方法

OS: Loongnix server 1.7 工具链为:系统自带的gcc-4.8.5 和 gcc-7.3 平台:3A3000/3A4000 源码:kernel: 4.19 编译步骤 ··· make loongson3_defconfig make -j4 ··· 出错信息: HOSTCC arch/mips/boot/compressed/calc_vmlinuz_load_addr arch/mips/boot/compressed/head.S: Assembler messages: arch/m

sense的专栏 1125

一生一芯——用RTL实现最简单的处理器NPC(南大数逻计组RV32ICPU) 代码及思考参考

本文介绍自己前期用Verilog编写的基于RV32I指令集的CPU,个人认为是最简单最易懂的版本(即没做什么优化,即代码很水,没有考虑一些奇怪的情况,只适用简单指令序列,即题目所示最简单的处理器),适合新手练手Verilog以及了解简单CPU的运行过程。本文基于一生一芯,利用Verilator进行仿真,并用gtkwave查看波形,不了解verilator和gtkwave的可以看前几篇文章。

long0_o的博客 3310

分布式会话拦截器

一、构建基本拦截器 需要新建的类的位置结构: 1、新建自己的拦截类 UserTokenInterceptor 实现 HandlerInterceptor 拦截器接口,实现三个方法 import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; i

qq_44299529的博客 634

WPS专业版自带字体

WPS专业版其中一个好处就是自带了部分有版权的字体,就算你安装了没买授权,他也会给你在系统里面安装上这些字体,至于没授权继续用合不合规我不知道。但是带来的实实在在的好处就是有些子他支持的全啊。 /usr/share/fonts/wps-office/FZWBK.TTF: 方正魏碑_GBK,FZWeiBei\-S03:style=Regular /usr/share/fonts/wps-office/FZFSK.TTF: 方正仿宋_GBK,FZFangSong\-Z02:style=Regular /us

chenqioulin的博客 5707

java拦截器放行_分布式会话拦截器

思路用户执行登录,注册等操作时,后端会生成一个token放入cookie中返回给前端,同时保存到redis中, 前端后续涉及验证token的http请求都需要在header中携带token和用户userId, 后端设置interceptor拦截指定请求,拿到header中的token, 后端通过 userId去redis中查找,如果查到并且二者匹配的上,次请求通过拦截,否则http请求无法到达co...

weixin_30975237的博客 512

正点原子stm32f103RChal库制作数字秒表:如用keil5和正点原子STM32F1开发板实现?

🏆本文收录于 《全栈Bug调优(实战版)》 专栏,该专栏专注于分享我在真实项目开发中遇到的各类疑难Bug及其深层成因,并系统提供高效、可复现的解决思路和实操方案。无论你是刚入行的新手开发者,还是拥有多年项目经验的资深工程师,本专栏都将为你提供一条系统化、高质量的问题排查与优化路径,助力你加速成长,攻克技术壁垒,迈向技术价值最大化与职业发展的更高峰🚀!    📌 特别说明: 文中部分技术问题来源于真实生产环境及网络公开案例,均经过精挑细选与系统化整理,并结合多位一线资深架构师和工程师多年实战经验沉淀,提

**My Coding Family** 1264

【VibeCoding系列】小白入门指南:模型选择、编辑器选择、项目预定全分析

开箱即用:下载安装就能用,不用配 API Key(也可以自己配)Cmd+K 快速修改:选中代码,按 Cmd+K,直接让 AI 修改Cmd+L 对话:侧边栏聊天,支持引用文件和代码@文件引用:输入 @ 就能引用项目中的文件,AI 自动读取上下文Agent 模式:告诉 AI 一个需求,它自动跨文件修改下载地址cursor.com(免费版有额度限制,足够入门)✅下载 Cursorcursor.com),安装打开✅选一个小项目(个人名片页 or Todo List)✅按照七步工作流开干。

十年老程序猿,AI 疯狂研究专家,前沿硬核知识分享 212

简单Web service 身份验证解决方案

关键词: Web    Service                                           问题提出:为了构建一个安全的web服务,需要对调用方进行身份验证,只让通过审核的用户调用web服务。 软件件环境:Web服务程序部署在分布于各地的工厂服务器,这些服务器位于内网之中,没有固定外网IP,且不能通过外网进行访问。调用这些Web服务的是一台连接至inte

王涛的专栏 1403

基于STM32的智能宠物喂食系统设计与实现(代码+PCB )

STM32;DHT11;本系统的软件程序基于Keil MDK-ARM V5集成开发环境进行编写和编译。Keil MDK是ARM公司官方推荐的嵌入式开发工具,支持ARM Cortex-M系列微控制器的程序开发,内置ARM C/C++编译器、调试器和仿真器,具有代码编辑、语法高亮、工程管理和在线调试等功能,是STM32开发领域应用最为广泛的IDE之一。

3254968421的博客 72

webService访问加密-Soapheader

原文:webService访问加密-Soapheader转载:http://blog.youkuaiyun.com/wanderocn/article/details/6584098 WebService head加密,可以对 WebService设置访问用户名和密码,增强 WebService的安全性 使 WebService只能被授权用户使用。具体实现步骤:1、 定义一个 soapheader派生类用来实...

weixin_34348805的博客 131

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

C#调用Axis2发布的带SoapHeader用户验证的WebService(通过测试)

C#调用Axis2发布的带SoapHeader用户验证的WebService   环境: 提供的服务是Axis2开发的,我方用C#调用,开发环境是VS2010     起因: 合作公司提供了一个WebService供我调用,为了保证安全性,要求在SoapHeader中带用户名和密码进行校验。 在获取了对方的WSDL文件后,并未在文件中指明SoapHeader的格式以及要传递的用户名、

2064

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Web service调用的安全性

  最近在项目中开发了一个web service,开发完后发现一个很大的安全性问题,并且这个问题好像在旧的项目web service当中并没有注意点,那就是调用的安全性,只要知道URL的人都可以直接调用了,这样要是碰到有人恶意调用就挂了。   后来查阅相关资料,发现了System.Web.Services.Protocols.SoapHeader这个东西,可以让用户必须通过指定口令来访...

banjun5639的博客 279

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Web Service安全控制之——SoapHeader

通过SoapHeader对用户口令进行验证,只有授权的用户才可以使用接口。确保了访问接口用户的安全性。Web Service如下所示: public MySoapHeader myHeader = new MySoapHeader();    public SoapHeaderService()    {        //Uncomment the following line if using designed components         //InitializeComponent();   

liesmars 1014

Web Service 安全性解决方案(SOAP篇)

拼吾爱程序人生»软件编程»Visual Studio.NET»Web Service»Web Service 安全性解决方案(SOAP篇)Web Service 安全性解决方案(SOAP篇)[9335浏览 ][手机版]返回列表发布日期: 2007-12-30 发布:cobra中文编程图书Programming Books文/flyingfox 出处/博客园闲着没事,研...

weixin_30652897的博客 352

关于 webservice 的SoapHeader 示例(赋值代码即可。)

SoapHeader是增强 webservice的安全性的。例如(支付、认证) 1,写一个web service发布了服务器上。 2,通过添加服务引用发布的webservice。 3,调用。 MyWebService的网站 添加一个类继承 System.Web.Services.Protocols.SoapHeader  ; 作为传递使用的。 using System; usin

wqs15192095633的专栏 5602

Web Service SoapHeader加密

WebService soapheader加密WebService soapheader加密WebService head加密,可以对WebService设置访问用户名和密码,增强WebService的安全性 使WebService只能被授权用户使用。具体实现步骤:1、 定义一个soapheader派生类用来实现WebService访问权限验证using System;us

陈公E事 819

如何保证Web Service的安全

转载自:http://www.cnblogs.com/jiapengliang2005/articles/1619233.html 要以安全的方式访问Web服务方法,可以考虑以下安全措施:l 是谁调用?——SoapHeader身份认证。l 来自哪里?——访问IP认证。l 加密传输 ——SSL安全访问。这些安全保护措施常常是配合使用的。7.9.1...

weixin_30622181的博客 192
上一篇: C#代码规范
下一篇: C#编写的 8种初级+高级排序方法
Mevin
博客等级 码龄18年 27粉丝 3原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值