正確設計的授權機制使系統更易部署和管理
基於Active Directory等企業身份驗證機制來授權
你的應用程序就能與公司現有的安全策略無縫地集成
在n層應用程序中
每一層都可使用授權
從而創建出更靈活的系統
在表示層
你可基於授權用戶的
角色
來自定義用戶界面(例如
為管理階級的用戶顯示管理菜單
但在普通用戶面前隱藏此菜單)
在業務層
可考慮在代碼主體中驗證授權
這就使黑客或其他非法用戶不易在未經正確授權的情況下使用一個代碼小節
在數據層
通過在檢索或插入數據之前請求授權
可確保只有合法用戶才能更改數據
授權類型
NET系統主要運行
種授權類型
Windows授權
代碼訪問安全性(Code Access Security
CAS)授權或者應用程序專用授權
綜合運用這些授權機制
就能創建一個非常安全的系統
下面讓我們詳細討論它們
Windows授權
利用訪問控制列表(Access Control Lists
ACL)來設置權限
系統管理員可控制哪些用戶有權訪問特定的系統資源
通常要由運行應用程序的那個系統的管理員來控制這些設置
由於生產環境和測試/認證環境中的管理員通常是不同的人
所以必須正確文檔化特定的授權設置
確保應用程序最終能正確運行
這些設置包括
Active Directory權限
NTFS管理的文件權限
Web Config設置
它為基於ASP
NET的應用程序限制對特定URL的訪問
服務器產品的特有權限
產品包括Microsoft SQL Server(例如表
視圖或存儲過程)或者Microsoft Exchange(例如郵箱
公共文件夾等)
CAS授權
Windows授權限制對單個對象的訪問
相反
CAS授權允許應用程序根據一系列批准的權限(名為權限集)來執行
這些權限集是基於
憑證
(evidence)而建立的
包括代碼的來源
它的出版商及其
強名稱
必須注意到
CAS授權獨立於其他任何授權機制運行
這樣可有效保護系統資源
無論用戶被驗證成什麼身份
例如
假定一個權限集禁止來自因特網的代碼刪除用戶機器上的文件
那麼這個限制將永遠有效
無論用戶的身份被驗證成
系統管理員
還是驗證成
來賓
可用Caspol
exe命令行實用程序來配置CAS授權
或使用Microsoft
NET Framework Configuration控制台來配置(後者通過控制面板的
管理工具
來訪問)
應用程序專用授權
即使Windows授權用戶執行一個操作
而且正在執行的代碼具有恰當的權限
但它們還要通過第
道關卡的考驗——你的應用程序可決定是否授權特定用戶執行操作
通過創建應用程序專用的一個授權框架
就可根據用戶的身份驗證主體(authenticated principal)來響應不同的用戶
並進一步控制用戶有權采取的操作
這種授權機制主要用於管理或限制對特定應用程序資源的訪問
或根據通過身份驗證的主體來強制不同的業務規則
我在自己的Web和Windows應用程序中廣泛運用了應用程序專用授權
在Web應用程序中
我通常用它動態生成菜單
使用戶只看到他們有權看到的選項
對於Windows應用程序
我將授權代碼嵌入業務邏輯中
防止用戶執行需要更高級授權的代碼
為了有效地使用和管理授權
你需要一個公共場所來存儲權限
而且要采取一種方式為用戶分組
這樣一來
一旦權限需要更改
就不必單獨配置每個用戶
角色
的作用
NET框架允許你對一個用戶組授權
利用
角色
為組內的所有用戶指派相同的安全權限
由於管理的是
角色
而非單獨的用戶
所以當用戶四處移動時
你的應用程序無需改變
另外
假定你管理的是
個角色
而不是
名用戶
那麼花在管理應用程序上的時間明顯少得多
使用Active Directory來存儲身份驗證信息
你的
NET應用程序就能自動使用Active Directory中內建的用戶和角色能力
此外
使用與SQL Server集成的安全機制
可以擴展這些角色
將權限關聯到SQL Server對象
從而將安全性提升到一個新台階
而且無需額外的編碼
即使決定不使用Active Directory
也可直接針對IPrincipal對象和IsInRole方法來編程
從而指派來自外部存儲(例如SQL數據庫表
XML文件或者使用套接字等接口的一個外部系統)的角色
並驗證角色的成員關系
授權是任何
NET系統的關鍵設計元素
理解了
種主要的授權類型後
你可在設計自己的系統時選用其中的一種或者多種
From:http://tw.wingwit.com/Article/program/Java/hx/201311/26499.html