【问题标题】:asp.net defaultCredentials issueasp.net defaultCredentials 问题
【发布时间】:2012-08-13 08:05:06
【问题描述】:

我有一个 Intranet 站点,它从另一个服务器(也在 Intranet 上)调用 POST 方法。

如果我在 IIS 中将身份验证模式设置为基本身份验证,我可以使用以下内容:

HttpWebRequest oReq = (HttpWebRequest)WebRequest.Create(sURL);
 oReq.ContentType = "application/x-www-form-urlencoded";
 oReq.Method = "POST";
 oReq.Timeout = 60000;

 ...

 oReq.Credentials = System.Net.CredentialCache.DefaultNetworkCredentials;

 ...


try
{
   HttpWebResponse oResp = (HttpWebResponse)oReq.GetResponse();
   ...
}

上述所有工作都按预期工作。

但是我需要在 IIS 中将安全性更改为 Windows 身份验证,一旦我这样做了,我就会在此行上不断收到错误 401:

try
    {
       HttpWebResponse oResp = (HttpWebResponse)oReq.GetResponse();
       ...
    }

这可以通过像这样更改凭据来解决:

NetworkCredential creds = new NetworkCredential("username","password","domain");
oReq.Credentials = creds;

但这无论如何都不是正确的方法。如何获取默认凭据以也适用于 Windows 身份验证?

【问题讨论】:

  • 您使用哪些浏览器进行测试?该资源可能会为您指明正确的方向。

标签: c# asp.net authentication iis credentials


【解决方案1】:

如果您有一个网站呼叫另一个网站,那么您就有了第二个跃点。这是 kerberos 的第二跳问题。

Intranet 站点需要代表最终用户调用第二个站点的权限。

我建议您使用工具调用DelegConfig。我不能高度推荐它。它是一个简单的 asp.net 应用程序,它会告诉你你的 kerberos 设置出了什么问题,并且可以告诉你如何修复它(或者如果你愿意,可以自己做)

我发现我必须先让客户端到服务器的身份验证工作才能正常工作,但是一旦到了那里,就可以很容易地找出下一跳到 UNC/http/sql 等的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-20
    • 2010-09-21
    • 2010-11-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多