首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在重定向时为HttpWebRequest.Credentials构建一个HttpWebRequest.Credentials

在重定向时为HttpWebRequest.Credentials构建一个HttpWebRequest.Credentials
EN

Stack Overflow用户
提问于 2011-02-07 06:42:08
回答 2查看 13.7K关注 0票数 2

最近,我询问了一个关于服务器何时返回重定向的question有关NetworkCredential和HttpWebRequest.Credentials。我确定构建一个CredentialCache of NetworkCredential实例适用于我的场景。现在,我有了一个临时方法,它用硬编码的所有域名构建一个CredentialCache。成功了,太棒了。

代码语言:javascript
复制
        CredentialCache cache = new CredentialCache();
        cache.Add(new Uri("http://example.com"), "Negotiate", loginCredentials);
        cache.Add(new Uri("http://redirected.example.com"), "Negotiate", loginCredentials);
        request.Credentials = cache;

现在,我需要使这个更加灵活。重定向的全部思想是在服务器上实现负载平衡。在调用HttpWebRequest.GetResponse()之前,客户端不会确切知道它将被重定向到哪里。在遇到重定向服务器时,构建包含每个重定向服务器的CredentialCache的首选方法是什么?还有,是什么原因使这件事变得如此困难呢?为什么单个NetworkCredentials实例不能满足每个重定向的HttpWebRequest.Credentials?它是否引入了安全漏洞来重用跨重定向的凭据?

谢谢。

EN

回答 2

Stack Overflow用户

发布于 2011-07-21 09:04:57

我使用了代码并得到了401错误(SharePoint 2010 )。然后登录其他站点,在下面的行中尝试"NTLM“而不是"Negotiate”。现在很好用。

不工作:

代码语言:javascript
复制
cache.Add(new Uri(myProxy.Url), "Negotiate", new NetworkCredential("UserName", "Password", "Domain"))

工作:

代码语言:javascript
复制
cache.Add(new Uri(myProxy.Url), "NTLM", new NetworkCredential("UserName", "Password", "Domain"))
票数 5
EN

Stack Overflow用户

发布于 2011-02-07 07:25:48

内特

我看你在用“谈判”,所以你为什么不用

代码语言:javascript
复制
CredentialCache.DefaultNetworkCredentials or CredentialCache.DefaultCredentials

为了所有的重定向?

来自MSDN:

DefaultNetworkCredentials属性返回的凭据仅适用于NTLM、协商和基于Kerberos的身份验证。

DefaultNetworkCredentials返回的凭据表示运行应用程序的当前安全上下文的身份验证凭据。对于客户端应用程序,这些通常是运行应用程序的用户的Windows凭据(用户名、密码和域)。对于ASP.NET应用程序,默认的网络凭据是登录用户的用户凭据或模拟的用户.。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4918682

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档