2010-04-12 64 views
0

我有一個WCF服務,其中包含多個暴露爲RESTful API的操作。服務上的大多數操作不需要認證/授權,但是隻有一個或兩個操作。我需要使用的授權策略超出了我的控制範圍,運行起來很昂貴。因此,我想避免在不需要它的操作上使用它。選擇性地將授權策略應用於操作

似乎在配置中定義的授權策略必須適用於整個服務 - 無法將它們應用於選擇性操作。這意味着我需要提出另一種機制來選擇性地將授權策略應用於特定的操作。

操作行爲不起作用,因爲ServiceSecurityContext.AuthorizationPolicies集合是隻讀的。

將我的服務拆分爲兩個合同 - 授權和未授權 - 很混亂,反正也無濟於事。爲了配置單獨的行爲,我需要單獨的服務(不僅僅是由一個服務實現的單獨的協定),以便每個服務都有一個用於配置的獨特名稱。單獨的服務意味着單獨的.svc文件指向這些服務,所以我的所有RESTful URL都會改變,除非我有一些瘋狂的URI重寫方案。這似乎比完成這一任務所需的工作要多得多。

我開始認爲唯一合理的方法是編寫我自己的授權策略來包裝昂貴的授權策略,並且只爲選擇操作調用它。當然,我需要一些方法來識別這些操作,但是當我來找它的時候我會穿過那座橋。

如何選擇性地將授權策略應用於服務操作?有沒有更簡單的方法?

回答

1

由於沒有人回覆,我會說沒有辦法做到這一點,所以我可以標記爲接受。我最終做了我所說的 - 寫一個包裝授權策略,根據某些配置有選擇地調用昂貴的授權策略。