HttpWebRequest向路由器提交基本身份验证

  服务端IIS设置为不允许匿名访问,只选择了基本身份验证,客户端使用HttpWebRequest发送一个get请求,请求一个页面。

  基本身份验证,客户端直接把用户的用户名和密码简单的转换为base64编码后发送到服务端,属于明码传送,不具安全性。

看一下整个请求响应过程:

1.1.    第一次HttpWebRequest先以匿名发送http请求

1.2.    服务端返回无授权回应
服务端IIS设置为不允许匿名访问,要求基本身份验证,所以服务端返回无授权回应,

同时在http头加了个WWW-Authenticate: Basic realm="2003base" 头,Basic表示要求基本身份验证。

1.3.    HttpWebRequest发送base64格式的用户名和密码
HttpWebRequest收到Basic的验证头后,就把NetworkCredential提供的用户名和口令链接起来,转换成base64编码,直接发送到服务端。

Base64编码用户名和密码看上去是这样的:Y2hua2luZzpwYXNzd29yZA==

经过转换后,可以看到用户名和密码是:chnking:password

代码:

/// <summary>
        /// 路由器设置
       /// </summary>
        /// <param name="userName">路由器登录用户名</param>
        /// <param name="password">路由器登录密码</param>
       /// <param name="url">操作路径</param>
        public static void RouterSet(string userName, string password,string url)
        {
            try
            {   
                HttpWebRequest request =(HttpWebRequest)HttpWebRequest.Create(url);

request.Method = "get";
                request.ContentType = "application/x-www-form-urlencoded";
                request.Credentials = CredentialCache.DefaultCredentials;

//获得用户名密码的Base64编码
                string code =Convert.ToBase64String(Encoding.ASCII.GetBytes(string.Format("{0}:{1}", userName, password)));

//添加Authorization到HTTP头
                request.Headers.Add("Authorization", "Basic " + code);

HttpWebResponse response =(HttpWebResponse)request.GetResponse();
                response.Close();

}
            catch (Exception ex)
            {
                LogHelper.logerror.Error("路由器设置错误:"+ex.Message);
            }
        }

HttpWebRequest向路由器提交基本身份验证的更多相关文章

  1. MVC身份验证.MVC过滤器.MVC6关键字Task,Async.前端模拟表单验证,提交.自定义匿名集合.Edge导出到Excel.BootstrapTree树状菜单的全选和反选.bootstrap可搜索可多选可全选下拉框

    1.MVC身份验证. 有两种方式.一个是传统的所有控制器继承自定义Control,然后再里面用MVC的过滤器拦截.所以每次网站的后台被访问时.就会先走入拦截器.进行前端和后端的验证 一个是利用(MVC ...

  2. Nginx集群之SSL证书的WebApi身份验证

    目录 1       大概思路... 1 2       Nginx集群之SSL证书的WebApi身份验证... 1 3       AuthorizeAttribute类... 2 4       ...

  3. ASP.NET Form身份验证方式详解

    注:不会涉及ASP.NET的登录系列控件以及membership的相关话题, 我只想用比较原始的方式来说明在ASP.NET中是如何实现身份认证的过程.   ASP.NET身份认证基础 在开始今天的博客 ...

  4. C#中使用 HttpWebRequest 向网站提交数据

    HttpWebRequest 是 .NET 基类库中的一个类,在命名空间 System.Net 里,用来使用户通过 HTTP 协议和服务器交互. HttpWebRequest 对 HTTP 协议进行了 ...

  5. Azure Service Bus 中的身份验证方式 Shared Access Signature

    var appInsights=window.appInsights||function(config){ function r(config){t[config]=function(){var i= ...

  6. ASP.NET MVC 随想录——探索ASP.NET Identity 身份验证和基于角色的授权,中级篇

    在前一篇文章中,我介绍了ASP.NET Identity 基本API的运用并创建了若干用户账号.那么在本篇文章中,我将继续ASP.NET Identity 之旅,向您展示如何运用ASP.NET Ide ...

  7. SQL Server安全(2/11):身份验证(Authentication)

    在保密你的服务器和数据,防备当前复杂的攻击,SQL Server有你需要的一切.但在你能有效使用这些安全功能前,你需要理解你面对的威胁和一些基本的安全概念.这篇文章提供了基础,因此你可以对SQL Se ...

  8. 关于WEB Service&WCF&WebApi实现身份验证之WEB Service篇

    在这个WEB API横行的时代,讲WEB Service技术却实显得有些过时了,过时的技术并不代表无用武之地,有些地方也还是可以继续用他的,我之所以会讲解WEB Service,源于我最近面试时被问到 ...

  9. JavaWeb学习笔记——开发动态WEB资源(五)servlet身份验证

    本工程的功能是实现Javaweb的servlet身份验证 一下是login.html文件中的代码 <!DOCTYPE html> <html> <head> < ...

随机推荐

  1. iframe跨域cookie问题

    今天在项目里面遇到了iframe跨域不能写cookie的问题.应用场景是这样的:有A和B两个业务,A要通过iframe的方式嵌入B,但是在ie下A不能通过写cookie的方式记录信息,在firefox ...

  2. 网络存储技术(3) based on zt

    各种术语介绍 一   ESCON    1991 年,IBM公司在S/390服务器中推出了ESCON(Enterprise System Connection)技术.它是基于光纤介质,最大传输速率达1 ...

  3. C#判断PC是否支持触摸屏

    C#判断PC是否支持触摸屏 添加引用PresentationFrameworkSystem.Windows.SystemParameters.IsTabletPC 使用win32api [csharp ...

  4. CentOS6.5上安装MySQL5.6

    1.准备数据存放的文件系统 新建一个逻辑卷,并将其挂载至特定目录即可.这里不再给出过程. 这里假设其逻辑卷的挂载目录为/data,而后需要创建/data/mysqldata目录做为mysql数据的存放 ...

  5. 第三周作业--VS 2013 单元测试

    VSTS可以实现自动测试,简而言之就是编写一个测试程序的程序,通过输入自动判断输出是否与预想相符,并给出代码覆盖率等等一大堆统计数据,以下为如何利用这一功能的简介. 1.新建项目,创建一个类.即要完成 ...

  6. Chrome浏览器官方下载地址

    Chrome浏览器离线安装包官方下载地址,和在线安装一样能自动更新. 正式版 http://www.google.com/chrome/eula.html?hl=zh-CN&standalon ...

  7. 清空form表单

    // 真正清空 form 表单中的内容 $("input").not(":button, :submit, :reset, :hidden").val(&quo ...

  8. Spring - constructor-arg和property

    1.说明 constructor-arg:通过构造函数注入.    property:通过setter对应的方法注入. 2.constructor-arg的使用示例 (1).Model代码: 1 2 ...

  9. scala 学习之:List fold, foldLeft方法

    先从一道题开始看: Eliminate consecutive duplicates of list elements. If a list contains repeated elements th ...

  10. PHP用户名用星号处理

    PHP用户名用*号处理: 用户名:英文.中文.中英文混合的.中英文字符混合的 处理为:首字母和末尾保留,中间用*号代替(一个字符直接显示,两个字符:张*,三个以上字符:宋*丹) 首先判断字符中是否包含 ...