認證與授權
認證與授權,authentication and authorize,這個是兩個不同的事。認證是對訪問身份進行確認,如驗證使用者名稱和密碼,而授權是在認證之後,判斷是否具有許可權進行某操作,如 authorize 屬性。簡單說,他們之間先後順序是先認證,再授權。
web api 的客戶端可以是瀏覽器,gui 應用程式,各移動裝置應用等等,設計的 api 可以供自己使用,也可以供別人使用。因為很多人習慣了 iis ,當 web api 寄宿在 iis 上時,他們習慣了 cookie 的方式,但 owin self host 的出現,以及不同端的出現,cookie 一下就成了麻煩的事了,不能解決問題了。
那該怎麼辦呢?**現在各平台提供 api,第三方應用使用資料前,都是先進行認證,然後返回 token 資訊,然後每次的請求都將 token 資訊一起傳送過去,就是 api 的請求都是每次需要進行驗證的,在沒有 cookie 的情況下,token 資訊怎麼傳送呢?
與 query string 一起
放到 request header authorization 裡面
使用 postman 進行測試 api 的時候,就能感受到了。這裡主要講第 2 種方式,使用 iis 的情況就不講了,因為可以使用 httpconext(system.web.dll),那麼使用 owin self host 方式,該怎麼去實現認證呢?
web api 認證實現
這裡不考慮資料傳輸安全的問題。認證前先要做好準備工作,提供乙個 api 認證介面,如 login,認證成功後返回 token(使用者資訊及超時時間等資訊),後續的 api 呼叫就要通過 token 進行認證與授權了。這裡有 3 種實現方式:
messagehandler參考
這是 web api 有的方式,通過繼承 delegatinghandler ,獲取 token 資訊,然後進行認證,只需將實現的 messagehandler 假如配置即可:
1 config.messagehandlers.add(new basicauthenticationhandler());
attribute filter參考
通過實現自定義的 authorize 屬性,獲取 token,然後進行認證
owin middleware參考
當然正確的做法應該是繼承 microsoft.owin.security.authenticationmiddleware 來實現,可以參考 katana project 其他的認證實現
總結
看了很多資料才了解到這些實現方式,其實都是因為自己知識儲備不夠,首先連認證和授權都搞混了,然後是之前 asp.net 模式的羈絆,阻礙了接受新鮮事物。面對新東西,還是先要搞清概念與原理,然後分析處理的邏輯,就能定位到解決問題要關注的點,所以啊,還是要多學習,深入學習。
httpclient 進行 basic 認證時,傳送使用者資訊的實現,參考
認證,授權2
authorization 授權 判斷使用者是否有權操作,比如登入的使用者有沒有許可權訪問資源或者資料庫 authentication 認證 使用者的identity.主要有 http基礎認證 證書 kerberos passport ntlm forms based digest 這兩個東西最好從...
Web API 2 中 Action的返回值
原文更新日期 2014.02.03 asp.net web api 2 入門教學 這篇教程描述了 asp.net web api 是怎樣將controller的action返回值轉變為http響應值的。乙個 web api controller 的 action 可以返回以下任何一種型別 4.一些其...
Web Api 2 介面API文件美化
使用用第三方提供的swgger ui 幫助提高 web api 介面列表的閱讀性,並且可以在頁面中測試服務介面。執行程式如下 注意 在ie中必須輸入紅色部分。並且可以對方法進行測試。在開發web api 是可以寫清楚注釋,並且在文件中可以全部的顯示出來。在工程中處了安裝swashbuckle 以外,...