authorization 授權 判斷使用者是否有權操作,比如登入的使用者有沒有許可權訪問資源或者資料庫
authentication 認證 使用者的identity. 主要有:http基礎認證、證書、kerberos、passport、ntlm、forms-based、digest
這兩個東西最好從讀音上區別,以前一直糊塗。一般應用先authenticate使用者, 判斷使用者是否能鏈結到系統。然後authorization, 判斷對某個功能是否有許可權。
authorization一般有兩種:acl/roles
acl:acess control lists. 判斷使用者是否在有許可權的使用者組內。缺點:不能定義動態條件。
role based: 使用者加入到某個role以後,自動獲得了很多特定的許可權。先判斷請求者的identity, 然後看它是否在role裡面。類似windows使用者和組的關係
1. **中的檢查方式:new principalpermission(name,role).demand();
2. 利用attribute的方式:[principalpermissionattribute(securityaction.demand,name="myuser", role="administrator")]
3. 使用 principal 物件中的屬性和 isinrole 方法執行顯式安全性檢查。
4. web.config裡面authorization節中的users/roles(這個一般資料都沒提到)
參考:台灣msdn library 中文技術檔案
:ppt
, 文章
2. global.asax的authenticaterequest事件中也可以設定httpcontext.user。
3. 參考:建置安全的 asp.net 應用程式: 驗證、授權和安全通訊(
4. intercepting filter (擷取篩選器)實現ihttpmodule, 並自行處理以下事件:
beginrequest. 此事件標誌著這是乙個新請求;每個請求都必須產生該事件。
authenticaterequest. 此事件標誌著所配置的身份驗證機制已經驗證了請求。附加到此事件可向篩選器確保請求已通過身份驗證。
authorizerequest. 與 authenticaterequest 一樣,此事件標誌著現在請求在處理過程中又前進了一步,並且請求已經得到授權。
resolverequestcache. 輸出快取模組使用此事件來簡化對已經快取的請求所進行的處理。
acquirerequeststate. 此事件標誌著應該獲得各個請求狀態。
prerequesthandlerexecute. 此事件標誌著請求處理程式將要執行。這是在呼叫此請求的 http 處理程式之前您可以參與的最後乙個事件。
postrequesthandlerexecute. 此事件標誌著 http 處理程式已經完成了對請求的處理。
releaserequeststate. 此事件標誌著應該儲存請求狀態,因為應用程式已經完成了對請求的處理。
updaterequestcache. 此事件標誌著**處理已完成,可以將檔案新增到 asp.net 快取中。
endrequest. 此事件標誌著已完成對請求的所有處理。這是應用程式結束時所呼叫的最後乙個事件。
此外,以下三個請求處理前事件可以按不確定順序引發:
presendrequestheaders.此事件標誌著 http 頭將要傳送給客戶端。因此可以在傳送之前新增、刪除或修改頭資訊。
presendrequestcontent. 此事件標誌著內容將要傳送給客戶端。這為傳送之前修改內容提供了乙個機會。
error. 此事件標誌著有未處理的異常。
在web.config中新增:
shiro認證授權
1.shiro配置類 1.1需要配置什麼?建立乙個shirofilte ctorybean物件,檢測認證 向bean中傳入securitymanager物件 沒有認證的時候應該訪問哪個url位址 setloginurl 哪些資源是可以被匿名訪問的 setfilterchaindefinitionma...
認證和授權
認證 一種是session會話狀態,資訊儲存在伺服器端 一種是客戶端傳送每乙個請求的同時帶乙個 secret access token 來驗證使用者。因為乙個 access token 可以用來確定乙個唯一的使用者和驗證這個使用者,api requests 應該總是通過 https 協議來傳輸,以防...
MVC授權認證
處於安全性考慮,mvc可以完成授權認證,授權認證的方式如下 1 配置config檔案,設定登入頁面 forms control 如下 public modelstate.isvalid是對model型別的校驗 modelstate.addmodelerror 自定義錯誤型別,便於前台顯示 html....