2008-09-22 88 views
3

我們的CMS實現了自己的基於角色的內容管理訪問控制,不像其他所有CMSs那樣;)我最近一直在嘗試實現將此訪問控制擴展到我們的Web服務API中,並最終確定哪些用戶可以訪問哪些方法。基於自定義角色的Web服務訪問

有沒有人執行過這樣的事情,或者知道我可能會研究的任何優秀資源,以便讓它在上面滾動。

我們的發展是在.NET 2.0完全完成,但是如果在另一種語言中存在的原則,我歡迎它:)

回答

0

實施基於角色的安全性時,我發現您首先必須確定特定用戶可能執行的操作。一旦你有了這些,你可以將它們綁在一起成爲角色;並隨意改變它們。

將每個Web方法調用視爲需要一個或多個操作。每種方法都應該接受用戶名/密碼或令牌。該方法將對您的數據庫或其他存儲機制進行一次調用,以確定所標識的用戶是否確實具有分配給他們的所需操作。然後,如果一切順利,請執行該方法的其餘部分。

實際上並不複雜而且非常靈活。

1

定製SOAP授權頭可能是最標準的.NET 2.0的方式來做到這一點,請參閱專家交流this article,它給出了一個非常簡單的實現。

基本上,您定義了一個SOAP標頭,它在每次服務調用時都傳遞用戶名和密碼。該服務可以訪問憑證,並可以進行任何需要的角色查找/授權檢查,並返回相應的響應。用戶名和密碼可以來自Windows,或者可以在運行時從客戶端的配置等插入。

0

對於我們的業務,我們實施了其他Web服務連接的安全Web服務,以驗證調用它們的客戶。它基於應用程序用戶名,密碼,認證碼和訪問級別。消費者提供除訪問級別以外的所有信息。這是由自己調用的方法提供的。身份驗證碼是一個時間敏感的代碼,由消費者計算並由安全服務進行驗證,僅適用於時間窗口。一個自定義的SOAP Authorization Header可用於傳遞大量的這些信息,或者您可以在方法調用中傳遞它。

每個應用程序的訪問權限可以按照每個方法設置用戶,也可以設置爲粒度較小的讀/寫/更新/刪除/所有級別。

Web Site (App Username, Password, Authentication Code) ---> 
    Web Service (App Username, Password, Authentication Code, Access Level) --> 
     Security Web Service (Returns True/False) 

希望這有些道理!