3

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

4

1 回答 1

1

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

request.UseDefaultCredentials = true;

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

  • 在您的应用程序池帐户上为您的前端应用程序设置 SPN
  • 在您的应用程序池帐户上为您的后端应用程序设置 SPN
  • 设置从第一个应用程序池到第二个 SPN 的委派
于 2010-08-17T20:22:59.670 回答