2012-10-10 58 views
1

我有一個需要編寫一個WCF服務,該服務將使用VBA代碼中的Service Moniker從MS Excel中調用。到目前爲止,我已經發現了這一點。從一個WCF服務如何調用第三方DLL中的方法作爲當前用戶不是IIS DefaultApppool

我也有模擬工作,所以,如果我是從一個Web方法返回當前用戶將返回我的用戶名,而不是IIS \默認應用或任何正在運行IIS作爲...

因此,這裏是我的問題。我有第三方DLL「Cyber​​Ark密碼管理,如果任何人有興趣」,我創建一個PWD對象,設置一些參數,然後調用一個名爲Getpassword的方法。現在我可以調用這個方法,但是我總是得到一個認證失敗。如果我鑽進去,我已經運行似乎,即使我使用模擬該DLL方法仍然被稱爲IIS \默認應用

這裏有一些片段的Cyber​​Ark代理的日誌...

模擬是在方法級別

[OperationBehavior(Impersonation = ImpersonationOption.Required)] 

開啓對此方法的調用返回我的域名和用戶名,因爲我所期望的

WindowsIdentity.GetCurrent().Name 

但是,這條線被稱爲IIS \默認應用

password = PasswordSDK.GetPassword(passRequest); 

我曾嘗試在代碼中做模擬,而不是使用Annotaion,我自己也嘗試了使用bolck一個模擬對象,似乎沒有任何所以這裏的工作是什麼我在想。

  1. 該DLL不知何故不允許我冒充出於安全原因,呼叫者

  2. 它可能不會再允許這個.NET架構出於安全原因

  3. 我沒有任何線索,會喜歡一些幫助:-)

回答

0

你可以用self-host這個應用程序代替使用IIS來託管。然後該服務將在已經以當前用戶身份運行的進程中運行。

(如果這是一個選項)

+0

您還可以設置IIS以在特定帳戶下運行應用程序。 – Tim

+0

我可能需要更多解釋... 此服務必須駐留在安裝了特定軟件的服務器上。爲了測試,我在本地安裝了「代理」。沒有代理,它不會工作。 如果我要做自我託管服務,我認爲可執行文件將駐留在最終用戶機器上正確?然後服務可以駐留在安裝了代理的計算機上。 我會嘗試你的建議,看看我想出了什麼,只是認爲這可能會增加我的問題的一些清晰度。 謝謝 – user1735894

相關問題