我有以下设置:
Client -> MiddleWS (ISS-hosted WCF) -> DestWS1 and DestWS2 (Self-hosted WCF services)
所有计算机都在具有Active Directory的Intranet上运行。我需要能够将一个凭据从客户端传播到DestWS1和DestWS2(这两个在同一服务器上的自托管环境中运行,但具有不同的地址)。如果我从客户端向MiddleWS发出请求,然后向DestWS1或DestWS2发出请求,则一切正常。但是,如果我想从MiddleWS向DestWS1和DestWS2发出两个后续请求,则第二个请求不会成功(给出权限问题)。
DestWS1和DestWS2必须具有不同的地址(f.x.,http://server/DestWS1.svc和http://server/DestWS2.svc)。我有两个从他们的WSDL生成的WCF客户端。好像我创建了两个客户端(因此是两个通道),第二个失败了(kerberos令牌发生了一些事情)。如果我只使用一个客户端但是从它进行两次调用到同一个服务,则两个请求都可以正常工作。关闭频道后,令牌无法再传输,看起来像。
有类似问题的人吗?
答案 0 :(得分:0)
显然这个问题是由于异步通信造成的。在同时调用两个服务时,身份验证将丢失。有两种可能的解决方案: - 切换到同步请求 - 在配置中将alwaysFlowImpersonationPolicy更改为true(我还没有尝试过,但很多其他人都指出它作为解决方案):)