使用当前用户凭据调用Web服务

时间:2011-06-02 19:44:03

标签: c# asp.net

我有一个Web服务,它位于除我的Web服务器之外的另一台服务器上,该服务需要域用户才能运行。我们有NTLM身份验证,我的应用程序是Web部件。每当用户输入信息并点击提交时,就会调用Web服务并完成其工作。有人可以告诉我如何在将用户凭据传递给它时调用Web服务。我需要拥有当前登录用户的凭据,以便它可以对Web服务进行身份验证。

此外,我尝试了以下的东西,但它无法正常工作

我尝试使用CredentialCache.DefaultNetworkCredentials传递给 网络服务。从阅读帮助中,这应该返回当前用户域,用户名和密码。

DefaultNetworkCredentials实际上是返回空白值,例如

DefaultNetworkCredentials.Domain = ""

2 个答案:

答案 0 :(得分:2)

当所有内容都设置为使用Windows集成(NTLM)身份验证时,这应该是可能的。这意味着您的Web服务器和运行Web服务的Web服务器。当然,所有服务器都必须在同一个域中。

您不应传递DefaultNetworkCredentials。只需将CredentialCache.DefaultCredentials传递给webrequest即可,如下所示:

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

答案 1 :(得分:-1)

除非您要求用户提供其域/用户名,否则绝对无法做到这一点。密码。它是一种旨在保护用户的安全功能。如果您只需调用CredentialCache.DefaultNetworkCredentials并拥有每个人的用户名/密码,那么您就可以轻松地假设自己的身份。