HttpWebRequest向路由器提交基本身份驗證


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);
            }
        }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM