關於 Web Api 2 認證與授權

2022-02-26 04:10:24 字數 1511 閱讀 9550

認證與授權

認證與授權,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 以外,...