【发布时间】:2011-11-11 11:22:20
【问题描述】:
我有一个 Web 应用程序,它引用了部署在 Windows 服务上的 wcf 服务。 Web 用户向 WCF 服务发送请求,然后调用存储过程。 Web 应用程序在 Windows 身份验证下运行,并勾选了模拟。 WCF 作为 wshttp 绑定运行。
这都位于同一台机器上。我希望 WCF 服务模拟 Web 应用程序用户。这可能吗?有人可以指导我如何实现它吗?
谢谢。
【问题讨论】:
我有一个 Web 应用程序,它引用了部署在 Windows 服务上的 wcf 服务。 Web 用户向 WCF 服务发送请求,然后调用存储过程。 Web 应用程序在 Windows 身份验证下运行,并勾选了模拟。 WCF 作为 wshttp 绑定运行。
这都位于同一台机器上。我希望 WCF 服务模拟 Web 应用程序用户。这可能吗?有人可以指导我如何实现它吗?
谢谢。
【问题讨论】:
是的,这是可能的。如果应用程序和服务在同一个系统上运行,则存在一些小限制,但您的方案不应受此影响。 来自How to: Impersonate a Client on a Service:
当客户端和服务在同一台计算机上运行并且 客户端在系统帐户下运行(即本地系统或 网络服务),客户端在安全时不能被冒充 会话是使用有状态的安全上下文令牌建立的。一个 WinForms 或控制台应用程序通常运行在当前 登录帐户,以便默认模拟该帐户。 但是,当客户端是 ASP.NET 页面并且该页面托管在 IIS 6.0 或 IIS 7.0,则客户端确实在网络服务下运行 默认账户。支持的所有系统提供的绑定 默认情况下,安全会话使用无状态安全上下文令牌。 但是,如果客户端是 ASP.NET 页面并且使用安全会话 使用有状态的安全上下文令牌,客户端不能 冒充。
如果您的服务作为 Windows 服务运行,则没有具体限制。
【讨论】: