2011-06-02 68 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;