【问题标题】:End-to-end kerberos delegated authentication in ASP.NETASP.NET 中的端到端 kerberos 委托身份验证
【发布时间】:2011-02-27 04:10:49
【问题描述】:

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

【问题讨论】:

    标签: asp.net kerberos windows-authentication ntlm


    【解决方案1】:

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

    request.UseDefaultCredentials = true;
    

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

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

    【讨论】:

      猜你喜欢
      • 2022-01-20
      • 1970-01-01
      • 2020-05-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-12
      相关资源
      最近更新 更多