2010-06-03 40 views
3

我正在嘗試設置一個內部網站,該網站將代表用戶使用HttpWebRequest與網絡中的另一個後端服務進行聯繫。 我必須在ASP.NET應用程序上使用集成Windows身份驗證,因爲後端系統只支持這種類型的身份驗證。ASP.NET中的端到端kerberos委託身份驗證

我可以在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」它現在說「談判」,但它似乎沒有不多做。

回答

1

在你的應用程序,你只需要使用的DefaultCredentials:

request.UseDefaultCredentials = true; 

然而,有一些工作要做上的Active Directory:

  • 設置一個SPN您的應用程序池帳戶您的前端應用程序
  • 在您的應用程序池帳戶上爲後端應用程序設置SPN
  • 設置來自第一個應用程序的委派lication池到第二個SPN