簡體   English   中英

如何安全地驗證WCF服務方法的調用程序集?

[英]How do I securely authenticate the calling assembly of a WCF service method?

當前情況如下:我們有一個生產.net 3.5 WCF服務,整個組織中的多個應用程序都通過wsHttpBinding或netTcpBinding使用該服務。 使用Windows集成安全性在傳輸級別上完成用戶身份驗證。 該服務具有方法Foo(string parameter) ,該方法只能由給定AD組的成員調用。 字符串參數是必需的。

一個新的客戶端應用程序開始起作用(.net 3.5,C#控制台應用程序),它消除了使用string參數的必要。 但是,僅應允許來自此特定應用程序的調用省略string參數。 服務器仍應知道客戶端應用程序的調用者的身份,因為AD組限制仍然適用(排除客戶端的模擬)。

我找到了一種在消息頭中傳遞調用(強命名)程序集的“證據”的方法,但是這種方法顯然是不安全的,因為“證據”很容易被欺騙。 同樣,CAS(代碼訪問安全性)似乎是一種可能的解決方案,但是我似乎無法弄清楚在這種特定情況下如何利用CAS。

有人對如何解決這個問題有建議嗎?

編輯:我在這個問題上找到了另一個話題 顯然得出的結論是,根本不可能以安全的方式實施。

在我看來,您需要將安全性擴展到單獨的服務中……以這種方式走更聯盟的路線,您可以在兩種情況下都使用公鑰和私鑰來實現握手形式的加密,以生成安全的會話令牌。

這樣,您就可以同時獲得Windows a =誘變和自定義解決方案的作用,同時保留安全性方法的屬性(我假設您是通過這種方式實現的。)

不過,這聽起來似乎有點工作-我不得不從頭開始,遇到一些跨域/授權問題。 但是我確信這個主意是好的。

但是最終您會得到一個很好的基於可靠聲明的安全模型

您可以得到來電者的地址:

 RemoteEndpointMessageProperty clientAddress = 
    OperationContext.Current.IncomingMessageProperties[RemoteEndpointMessageProperty.Name] 
as RemoteEndpointMessageProperty;
           string address = clientAddress.Address;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM