2011-06-02 69 views
1

我有一個Web服務位於另一臺服務器上,而不是我的Web服務器,該服務需要域用戶才能運行。我們有NTLM身份驗證,我的應用程序是一個Web部件。每當用戶輸入信息並點擊提交時,Web服務就會被調用並執行其工作。有人可以告訴我如何在將用戶憑據傳遞給它的同時調用Web服務。我需要擁有當前登錄用戶的憑據,以便它可以根據Web服務進行身份驗證。使用當前用戶的呼叫Web服務憑據

此外,我嘗試了下面的事情,但它不工作

我試圖用CredentialCache.DefaultNetworkCredentials傳遞到 Web服務。從閱讀幫助這應該返回當前的用戶域,用戶名和密碼。

DefaultNetworkCredentials真的返回空值e.g

​​3210

回答

-1

是絕對沒有辦法,除非你問你的用戶提供他們的域/用戶名密碼&做到這一點。這是一項旨在保護用戶的安全功能。如果你可以簡單地調用CredentialCache.DefaultNetworkCredentials並擁有每個人的用戶名/密碼,那麼你就可以輕鬆地承擔他們的身份。

+0

是有,看我的答案,即使你需要通過比當前登錄用戶的其他憑證,有一個Windows SDK的功能詢問他們:[CredUIPromptForCredentials](http://msdn.microsoft.com/en-us/library/Aa375177) – fretje 2011-06-04 23:24:39

2

這應該是可能的,當一切都設置爲使用Windows集成(NTLM)身份驗證。這意味着你的web服務器和運行web服務的web服務器。當然所有的服務器都必須在同一個域中。

您不應該傳遞DefaultNetworkCredentials。只是路過CredentialCache.DefaultCredentials到的WebRequest應該工作,像這樣:

HttpWebRequest req = (HttpWebRequest)WebRequest.Create(uri); 
req.Credentials = CredentialCache.DefaultCredentials;