WCF kerberos委托同一台机器上的服务

时间:2015-11-05 13:08:46

标签: asp.net wcf iis active-directory kerberos

我有以下设置:

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.svchttp://server/DestWS2.svc)。我有两个从他们的WSDL生成的WCF客户端。好像我创建了两个客户端(因此是两个通道),第二个失败了(kerberos令牌发生了一些事情)。如果我只使用一个客户端但是从它进行两次调用到同一个服务,则两个请求都可以正常工作。关闭频道后,令牌无法再传输,看起来像。

有类似问题的人吗?

1 个答案:

答案 0 :(得分:0)

显然这个问题是由于异步通信造成的。在同时调用两个服务时,身份验证将丢失。有两种可能的解决方案: - 切换到同步请求 - 在配置中将alwaysFlowImpersonationPolicy更改为true(我还没有尝试过,但很多其他人都指出它作为解决方案):)