Asp.Net MVC 4 Web API 中的安全認證-自定義Authrize Filter


ASP.NET MVC4中的Web API提供了很好的API接口開發方式。可以更好地適應現在的跨平台移動開發。相信大家很多的項目現在都在使用Web Service作為提供數據的接口。好吧,那么Web API將是用來革Web Service的命。哈哈。 當然了,WCF這玩意我相信很可能在不久的將來會融入到ASP.NET MVC中。

 

開發提供數據的API,最重要的是數據的安全性。那么對於我們來說,如何確保數據的安全將會是需要思考的問題。沒有SOAP頭,只能用別的方式。比如OAUTH,HTTP AUTH等等。這篇文章將會和大家探討下普通的http認證使用。然后會在后續提供oauth認證方案。。。。 Smile 

 

聲明下:對於老鳥們,下面的文章可能對你沒用,因為都是基礎的http認證知識。

 

先看看ASP.NET MVC 官網提供的例子:http://code.msdn.microsoft.com/ASPNET-Web-API-JavaScript-d0d64dd7

Web API:

image

 

默認的是使用Form認證。對於我們來說這個是比較熟悉的。如果想了解MVC是如何實現監測form認證的,可以下載下MVC源代碼看看(反正我是看着那些代碼頭疼Smile)。但是吧,這個簡單的檢測認證部分我還是能看明白的:

image

 

 

如果你使用的是跨平台的調用Web API,那么這個認證好像就沒法用了。需要自定義認證方式,簡單的辦法就是繼承Authorize類,override方法OnAuthorization。

這里假設我們使用基本的http認證,那么OnAuthorization方法實現如下:

image

 

在http請求的header中查看是否有認證信息,然后使用Base64解密:

image

 

來吧,瀏覽器測試下:訪問添加了CustomBasicAuthorize的Controller,會彈出windows認證框,輸入用戶名和密碼,使用Fiddler跟蹤下:

image

 

 

 

 

 

 

http 請求信息:

image

 

看着認證信息加密了,其實沒啥用,Base64加密的,太容易破解了。 所以如果這種認證方式也就適合在公司內部系統使用。 如果你真想在項目中使用,也是可以的,請使用SSL。

 

以上沒有提供object-c的調用代碼或者android的調用代碼。

 


免責聲明!

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



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