asp.net 默认凭据问题



我有一个内部网站点,它从另一台服务器调用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 身份验证?

如果你有一个网站调用另一个网站,你就有了第二个跃点。 这是一个 kerberos 第 2 个跃点问题。

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

我建议你使用一个名为DelegConfig的工具。 我不能强烈推荐它。 这是一个简单的 asp.net 应用程序,它将告诉您Kerberos设置出了什么问题,并可以告诉您如何修复它(或者如果需要,可以自己修复)

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

最新更新