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

标签 asp.net kerberos windows-authentication ntlm

我正在尝试建立一个内部网站,该网站将使用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”(协商),但它似乎并没有做很多事情。

最佳答案

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

request.UseDefaultCredentials = true;

但是,在Active Directory上有一些工作要做:
  • 在您的应用程序池帐户中为前端应用程序
  • 设置SPN
  • 在应用程序池帐户上为后端应用程序
  • 设置SPN
  • 设置从第一个应用程序池到第二个SPN的委派
  • 关于asp.net - ASP.NET中的端到端kerberos委派身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2963812/

    相关文章:

    javascript - 在 TreeView 中选择父节点时如何选择所有子节点? (当从用户控件使用 TreeView 时)

    apache-kafka - 使用 com.ibm.security.auth.module.Krb5LoginModule 时如何设置 JAAS serviceName

    c - GSS-API 接受上下文时出错 : Service key not available - Solaris code, Windows KDC

    .net - 需要打开哪些端 Eloquent 能从域外 IIS Web 服务器上的 asp.net 站点向 AD 服务器进行身份验证?

    asp.net - 如何在 ASP.Net Web API 中为特定 Controller 启用 Windows 身份验证

    asp.net - 如何改进具有多个 case 语句的页面设计

    c# - 爬虫/机器人如何工作?区分机器人/爬虫 http 请求

    asp.net - Umbraco 前端的 Oauth 授权

    java - 如何使用 Windows Java 客户端保存 Kerberos 服务票证?

    asp.net - iis7中的windows身份验证