1

我在 WCF Web 服务中实现了各种功能,这些功能目前由 Excel 客户端通过本地 COM 可见库使用。我希望在 Web 客户端中实现一些前端功能。我使用设置我的客户端代理

dataChannel.Credentials.Windows.AllowedImpersonationLevel = TokenImpersonationLevel.Delegation;

ASP.NET 模拟和 Windows 身份验证一样打开(无匿名)。当 Web 服务和网站托管在同一台服务器上时,不会出现任何问题,并且桌面用户的凭据可以完美地从浏览器传递到网站再到 WCF。但是,当网站和 Web 服务托管在不同的机器上(相同的域,仅限 Intranet)时,我会收到 401 身份验证错误。我究竟做错了什么?

4

1 回答 1

2

听起来您正遭受 kerberos“双跳”问题的困扰。默认情况下,Windows 不会将 kerberos 身份验证令牌传递到另一台服务器,因此如果您有用户访问网络服务器 A 并进行身份验证,则网络服务器 A 会访问网络服务器 B 上的服务。网络服务器 A 不会将身份验证传递给网络服务器 B,因此您会得到 401。我认为本文应该可以帮助您在网站服务器和 Web 服务服务器之间启用 kerberos 委托

于 2011-08-31T09:24:29.803 回答