2011-03-17 85 views
2

我已經盡力找到有關.NET Remoting的關於IAuthorizeRemotingConnection接口的任何有用信息,而且我沒有真正發現任何有用的信息。IAuthorizeRemotingConnection .NET Remoting

這裏的問題並不是一個真正的「如何做」,因爲這裏有很多例子,但問題是IsConnectingIdentityAuthorized方法中身份是如何相互關聯的。

我們有一個.NET Remoting服務正在運行,並且最近將IAuthorizeRemotingConnection接口添加到遠程服務用於驗證身份的類中。我遇到的問題是我們驗證的「什麼身份」?

我可以在傳入IAuthorizeRemotingConnection方法時記錄身份,因爲它傳入本地系統。我可以告訴身份是MACHINE \ ASPNET用戶。 Howeeer,在我們的開發服務器中,我們將服務託管在另一個開發Web服務器上,我無法看到身份。

基本上,雖然IsConnectingEndPointAuthorized方法被遠程服務調用,並且我可以記錄這種情況,但我從來沒有看到IsConnectingIdentityAuthorized被調用。

這非常奇怪,因爲雖然我在本地系統中使用了相同的確切代碼庫,但它在dev environmet中的工作方式不同。最令人沮喪的是,我無法分辨出哪個身份正在嘗試使用該服務,即使如此,我甚至無法看到用於驗證idenity被調用的方法。

我確實發現web應用程序日誌中出現「登錄被拒絕」消息時發生異常。我想知道如果我們在幕後以某種方式進行「預驗證」,並且失敗了,所以我們甚至無法調用IsConnectingIdentityAuthorized方法。

任何人有任何這方面的經驗,他們可以分享?

添加之前,「使用WCF」的服務,我上午規劃走那條路,但它會是又在這之前的完全實施了一段時間。我也有認可WCF的真實性身份問題。但是,我很樂意能夠認識到這個遠程問題。

+0

你可以用「登錄被拒絕」消息發佈完整的例外嗎? – tobsen 2011-03-17 20:23:40

回答

0

當我得到遠程處理對象在SSL下工作時,我碰到了這些問題。我們需要解決信任問題(caspol給網站FullTrust),並且由於使用的所有部件都強命名,我們需要停止使用生成的程序集的版本

[assembly: AssemblyVersion("7.3.*")] 

,而是要確保他們固定

[assembly: AssemblyVersion("7.3.1.1")] 

- 這似乎使融合更容易混淆。

除此之外,開發服務器上的AppPool用戶是否擁有權限,或者您是否需要確保跨連接使用同一用戶?您的調用者上的MACHINE \ ASPNET將具有與您的服務器上不同的安全令牌,因此您可能需要在域用戶下進行身份驗證?看到這個完整的圖片和一些想法:http://msdn.microsoft.com/en-us/library/ff649264.aspx