针对使用基本身份验证的身份验证代理服务器的WCF调用进行无缝身份验证

时间:2014-04-01 20:15:31

标签: wcf authentication proxy

我将在前面说明这是一个讨论得很好的话题,但我一直无法找到我需要的答案。我创建了一个winforms应用程序,使WCF调用服务器。一切正常,没有http代理以及http代理存在(非身份验证)。我没有做任何额外的编码来实现这一点,因为在.NET 1.1之后修复了许多代理问题。它只是通过接受Internet选项(来自IE)。这是我的主要目标。我希望代理配置为"只是工作"包括认证。现在,使用auth的代理失败。我不想以编程方式指定凭据,服务器名称,端口等......这里有人指出 How should I set the default proxy to use default credentials?需要以下条目:

<system.net>
<defaultProxy useDefaultCredentials="true" />
</system.net>

我在我的app.config中得到了这个,但没有成功。我使用squid作为我的代理服务器,并使用基本身份验证进行设置。通过此设置,我不得不以编程方式提供用户名/密码(不要这样)。我知道如何做到这一点,我可以让它工作,但这不是重点。我想要发现所有设置,包括我用于验证Windows的当前凭据。以下是一个有趣的答案Web service calls and proxy authentication in the real world。它声明如果IE必须提示输入用户名和密码,那么我的应用程序也是如此。事实上,IE DOES提示输入用户名和密码。我在这里找到了很好的信息http://blogs.msdn.com/b/stcheng/archive/2008/12/03/wcf-how-to-supply-dedicated-credentials-for-webproxy-authentication.aspx。我某处出错了。如果基本身份验证错误,那么什么类型的身份验证将允许所有内容#34;只是工作&#34;。

1 个答案:

答案 0 :(得分:0)

经过更多的研究,你真的无法做我在身份验证协议中尝试做的事情。以下MSDN页面http://msdn.microsoft.com/en-us/library/system.net.credentialcache.defaultcredentials.aspx指出了这一点。可以理解的是,如果非常旧的基本身份验证,并且根据此页面调用DefaultCredentails不支持,但是我部署到可能使用较旧的代理服务器运行XP的用户。我将不得不为我的用户群提供一个手动方法来为代理服务器配置基本身份验证的用户/密码。我相信我试图实现的目标肯定是可以使用NTLM和Negotiate类型的auth方法。最重要的是你必须手动提供基本身份验证的用户/密码,代码如下:

WebRequest.DefaultWebProxy.Credentials = new NetworkCredential("user", "password123");