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

本文关键字:调用 web 服务 用户 | 更新日期: 2023-09-27 17:58:21

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

我也试过下面的东西,但它不起作用

我尝试使用CredentialCache.DefaultNetworkCredentials传递给web服务。通过阅读帮助,这应该会返回当前的用户域、用户名和密码。

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

DefaultNetworkCredentials.Domain = ""

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

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

您不应该通过DefaultNetworkCredentials。只需将CredentialCache.DefaultCredentials传递到Web请求就可以了,如下所示:

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

除非您要求用户提供他们的域/用户名&暗语这是一项旨在保护用户的安全功能。如果你可以简单地调用CredentialCache.DefaultNetworkCredentials并拥有每个人的用户名/密码,那么你就可以轻松地假设他们的身份。