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

ASP.NET中的端到端kerberos委派身份验证,asp.net,kerberos,windows-authentication,ntlm,Asp.net,Kerberos,Windows Authentication,Ntlm,我正在尝试设置一个内部网站,该网站将代表用户使用HttpWebRequest联系网络中的另一个后端服务。 我必须在ASP.NET应用程序上使用集成的Windows身份验证,因为后端系统只支持这种类型的身份验证 我能够在ASP.NET应用程序上设置IWA,并且正如我所期望的那样使用kerberos。但是,当身份验证委托给后端系统时,它就不再工作了。这是因为后端系统仅支持kerberos IWA,但由于某种原因,委托(即使传入的请求经过kerberos身份验证)会在转发到后端系统之前将身份验证转换为

我正在尝试设置一个内部网站,该网站将代表用户使用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”设置为现在的“协商”,但似乎没有多大作用。

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

request.UseDefaultCredentials = true;
但是,在Active Directory上还有一些工作要做:

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