目前的情況如下: 我們有一個生產.NET 3.5 WCF服務,通過整個組織的多個應用程序,超過的wsHttpBinding或NetTcpBinding的使用。用戶身份驗證正在使用Windows集成安全性在傳輸級別上完成。此服務有一個方法Foo(string parameter)
,它只能由給定AD組的成員調用。字符串參數是強制性的。如何安全地驗證WCF服務方法的調用程序集?
一個新的客戶端應用程序已經開始發揮作用(.NET 3.5,C#控制檯應用程序),從而消除了字符串參數的必要性。但是,只有來自這個特定應用程序的調用應該被允許省略字符串參數。客戶端應用程序的調用者的身份仍然應該由服務器知曉,因爲AD組限制仍然適用(排除客戶端上的模擬)。
我找到了一種方法來pass on the "evidence" of the calling (strong-named) assembly in the message headers,但這種方法顯然並不安全,因爲「證據」可以很容易被欺騙。另外,CAS(代碼訪問安全性)似乎是一種可能的解決方案,但我似乎無法弄清楚如何在這種特殊情況下使用CAS。
有沒有人對如何解決這一問題有何建議?
編輯:我發現another thread on this subject;顯然得出的結論是,以安全的方式實施是不可能的。
我還要提到的是客戶端應用程序的反編譯代碼不應該爲黑客提供模擬認證過程的信息。 – Tim 2010-06-17 08:42:35