asp.net - 如何将用户身份从一个 IIS 中托管的 Web 应用程序传递到另一个 IIS 中托管的 Web 服务?

标签 asp.net wcf iis windows-authentication impersonation

我有一个 Web 应用程序(在 ASP.net 4.0 中开发)托管在 Windows Server 2003 R2 机器上的 IIS 6.0 中。 Integrated Windows Authentication 已为此 Web 应用程序打开。

我在 Windows Server 2008 R2 机器上的 IIS 7.5 中托管了一个 Web 服务(使用 WCF 开发)。 'Windows 身份验证 也为此 Web 应用程序启用。

  • 我使用我的 Windows 域帐户登录到我的本地计算机。当我浏览 Web 应用程序时,它会询问我的域用户名和密码。在网络应用程序中,我正确地获得了我的身份。
  • 在我的机器上(使用其他一些 Winform 应用程序),如果我调用同一个 Web 应用程序(Web 服务的),服务代码将在我的 Windows 身份下执行。

因此 Integrated Windows Authentication 对于在不同计算机上的单独 IIS 中托管的两个 Web 应用程序独立运行良好。

当从我的本地计算机浏览 Web 应用程序并且网页在内部调用该服务时,就会出现问题。在这种情况下,“服务不在我的 Windows 身份下运行”如预期的那样。它要么在 asp.net web 应用程序或 web 服务的 web 应用程序的应用程序池的标识下运行。

我不希望我的网络服务负责对用户进行身份验证。它将使用简单的 basicHttpBinding。它只会使用 CurrentPrincipalHttpContext 等读取用户的名称。验证用户的身份只能由 IIS 完成。

有人可以帮助我将我的 Windows 身份从一个 IIS 传递到另一个吗?

最佳答案

您需要设置 kerberos 委托(delegate),因为默认情况下不会将身份传递给另一台机器。

https://web.archive.org/web/20190419225807/https://blogs.technet.microsoft.com/askds/2008/11/25/fun-with-the-kerberos-delegation-web-site/

关于asp.net - 如何将用户身份从一个 IIS 中托管的 Web 应用程序传递到另一个 IIS 中托管的 Web 服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14496677/

相关文章:

c# - 使用 asp.net 发送邮件以及嵌入的图像

asp.net - 使用 ELMAH 记录 WCF 服务的异常

c# - 如何在 ASP.NET MVC 中应用脚本和样式后从 HTML View 生成 PDF

c# - Ghostscript.NET 光栅器内存不足

asp.net - 重写 ASP.NET 输出时为 "Invalid use of response filter"

ssl - IIS 8.5 上的 SNI 和 SSL

IIS 8.5 HTTP 重定向 VS Favicon

c# - 带有方法参数的 WCF webHttpBinding 错误。 "At most one body parameter can be serialized without wrapper elements"

c# - WCF REST JSON 服务缓存

c# - Windows 服务托管 WCF 服务的 IIS 代理