程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> 關於ASP.NET >> ASP.NET Web API(二) 安全驗證之使用HTTP基本認證

ASP.NET Web API(二) 安全驗證之使用HTTP基本認證

編輯:關於ASP.NET

在前一篇文章ASP.NET Web API(一):使用初探,GET和POST數據中,我們初步接觸了微軟的REST API: Web API。

我們在接觸了Web API的後就立馬發現了有安全驗證的需求,所以這篇文章我們先來討論下 安全驗證一個最簡單的方法:使用HTTP基本認證。

HTTP基本認證原理

在HTTP協議進行通信的過 程中,HTTP協議定義了基本認證過程以允許HTTP服務器對WEB浏覽器進行用戶身份認證的方法,當一個客戶端 向HTTP服務器進行數據請求時,如果客戶端未被認證,則HTTP服務器將通過基本認證過程對客戶端的用戶名及 密碼進行驗證,以決定用戶是否合法。

其基本的實現方式是:

客戶端在用戶輸入用戶名及密碼 後,將用戶名及密碼以BASE64加密,加密後的密文將附加於請求信息中,如當用戶名為Parry,密碼為123456 時,客戶端將用戶名和密碼用":"合並,並將合並後的字符串用BASE64加密,並於每次請求數據時 ,將密文附加於請求頭(Request Header)中。

HTTP服務器在每次收到請求包後,根據協議取得客戶 端附加的用戶信息(BASE64加密的用戶名和密碼),解開請求包,對用戶名及密碼進行驗證,如果用戶名及密 碼正確,則根據客戶端請求,返回客戶端所需要的數據;否則,返回錯誤代碼或重新要求客戶端提供用戶名及 密碼。

Web API使用HTTP基本認證進行安全驗證

我們還是基於前一篇文章的示例進行測試。

首先我 們基於System.Web.Http.AuthorizeAttribute類實現一個HTTP基本認證的類,並實現兩個方法: OnAuthorization和HandleUnauthorizedRequest。

添加一個類HTTPBasicAuthorizeAttribute,繼承於 System.Web.Http.AuthorizeAttribute,先來實現OnAuthorization。

public override void 

OnAuthorization(System.Web.Http.Controllers.HttpActionContext actionContext)
 {
     if (actionContext.Request.Headers.Authorization != null)
     {
         string userInfo = Encoding.Default.GetString(Convert.FromBase64String

(actionContext.Request.Headers.Authorization.Parameter));
         //用戶驗證邏輯
         if (string.Equals(userInfo, string.Format("{0}:{1}", "Parry", "123456")))
         {
             IsAuthorized(actionContext);
         }
         else
         {
             HandleUnauthorizedRequest(actionContext);
         }
     }
     else
     {
         HandleUnauthorizedRequest(actionContext);
     }
 }

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved