WCF双跳本地主机在第二跳上丢失模拟
我已经看过很多关于WCF模拟双跳问题的帖子,但是没有一篇专门帮助我解决我的问题 我错过了什么?我还需要做什么才能在服务2上保留我的模拟用户(域\用户名)?我正在查看ServiceSecurityContext.Current.WindowsIdentity.Name以确认-可能是错误的 设置:WCF双跳本地主机在第二跳上丢失模拟,wcf,iis,impersonation,identity-delegation,Wcf,Iis,Impersonation,Identity Delegation,我已经看过很多关于WCF模拟双跳问题的帖子,但是没有一篇专门帮助我解决我的问题 我错过了什么?我还需要做什么才能在服务2上保留我的模拟用户(域\用户名)?我正在查看ServiceSecurityContext.Current.WindowsIdentity.Name以确认-可能是错误的 设置: 托管在localhost IIS中的客户端应用程序,服务引用为服务1-模拟WindowsIdentity(域\用户名) 服务1-承载在localhost IIS中的WCF服务,服务引用到服务2 服务2-本
- 我可以成功地进行双跳,代码执行得很好
- 在服务1(跃点1)中,我的ServiceSecurityContext.Current.WindowsIdentity是我模拟的人(域\用户名)
- 在服务2(跃点2)中,my ServiceSecurityContext.Current.WindowsIdentity是IIS应用程序池用户
- ImpersonationLevel=“委派”
- 这两个WCF服务都启用了Windows身份验证并禁用了匿名身份验证
我已经在WCF服务客户端和服务端点行为配置上设置了impersonationLevel=“Delegation”。我的服务方法专门用impersonationOption=“Allowed”(跃点1)和impersonationOption“Required”(跃点2)修饰。事实证明,在我的案例中,关键是确保设置了以下行为属性:
<serviceAuthorization impersonateCallerForAllOperations="true" />
以前,当我设置这个值时,我在Entity Framework中收到错误,所以我取消了设置。似乎在将我的设置与标准实现(如其他varios文章中所述)相一致的过程中,我最终能够设置此属性并使其按预期工作
编辑:
如果这些都在本地工作,但在分布式环境中不起作用,请查看以下帖子:。您可能需要将计算机设置为相互信任委派。是否可以显示与您如何设置模拟相关的代码或配置?嗨,Edmund。我已经添加了基本绑定配置。具体来说,您还想看什么?您在哪里配置您的模拟级别?请查看我的最新编辑,这是如何添加到服务1或服务2的?在我的案例中是服务2和1。请参阅我的附加答题。你可能会发现自己有第二个问题。
<serviceAuthorization impersonateCallerForAllOperations="true" />