端到端的kerberos在ASP.NET中委派了身份验证

时间:2010-06-03 06:47:18

标签: asp.net kerberos ntlm iwa

我正在尝试设置一个内部网站,代表用户使用HttpWebRequest联系网络中的另一个后端服务。 我必须在ASP.NET应用程序上使用集成Windows身份验证,因为后端系统仅支持此类身份验证。

我能够在ASP.NET应用程序上设置IWA,并且正如我所期望的那样使用kerberos。但是,当身份验证委派给后端系统时,它不再起作用。这是因为后端系统仅支持kerberos IWA,但由于某种原因,即使传入的请求是经过kerberos身份验证的委托 - 在转发到后端系统之前将身份验证转换为NTLM。

是否有人知道我需要在ASP.NET应用程序上做什么才能允许它使用kerberos转发身份?

我尝试了以下但是它似乎无法正常工作

CredentialCache credentialCache = new CredentialCache();
credentialCache.Add(request.RequestUri, "Negotiate", CredentialCache.DefaultCredentials.GetCredential(request.RequestUri, "Kerberos"));
request.Credentials = credentialCache;

我也尝试设置“Kerberos”,它现在说“Negotiate”,但它似乎没有做太多。

1 个答案:

答案 0 :(得分:1)

在您的应用程序中,您只需要使用DefaultCredentials:

request.UseDefaultCredentials = true;

但是,在Active Directory上还有一些工作要做:

  • 在前端应用程序的应用程序池帐户上设置SPN
  • 在您的后端应用程序的应用程序池帐户上设置SPN
  • 设置从第一个应用程序池到第二个SPN的委派