Asp.net WCF kerberos委派到同一台计算机上的服务
我有以下设置:Asp.net WCF kerberos委派到同一台计算机上的服务,asp.net,wcf,iis,active-directory,kerberos,Asp.net,Wcf,Iis,Active Directory,Kerberos,我有以下设置: Client -> MiddleWS (ISS-hosted WCF) -> DestWS1 and DestWS2 (Self-hosted WCF services) 所有计算机都在具有Active Directory的Intranet上运行。我需要能够将一个凭据从客户端传播到DestWS1和DestWS2(这两个凭据在同一服务器上的自托管环境中运行,尽管地址不同)。如果我从客户机向中间件发出请求,然后中间件向DestWS1或DestWS2发出请求,则一切正常。
Client -> MiddleWS (ISS-hosted WCF) -> DestWS1 and DestWS2 (Self-hosted WCF services)
所有计算机都在具有Active Directory的Intranet上运行。我需要能够将一个凭据从客户端传播到DestWS1和DestWS2(这两个凭据在同一服务器上的自托管环境中运行,尽管地址不同)。如果我从客户机向中间件发出请求,然后中间件向DestWS1或DestWS2发出请求,则一切正常。但是,如果我想从MiddleWS向DestWS1和DestWS2发出两个后续请求,则第二个请求不会成功(给出了权限问题)
DestWS1和DestWS2的地址不同(f.x.,和)。我有两个WCF客户端是从它们的WSDL生成的。似乎如果我创建了两个客户端(因此有两个通道),第二个客户端就会失败(kerberos令牌发生了一些事情)。如果我只使用一个客户机,但从它向同一个服务发出两个调用,那么两个请求都可以完美地工作。一旦我关闭通道,令牌就不能再传输了,看起来是这样的
有人有类似问题吗?显然,问题是由于异步通信造成的。在异步调用这两个服务时,身份验证将丢失。有两种可能的解决方案: -切换到同步请求
-在配置中将alwaysFlowImpersonationPolicy更改为true(我没有尝试过,但许多其他人将其作为解决方案):您是否在AD中配置了适当的SPN和委派?错误是什么?是的,在中间服务器上启用了委派,并且存在SPN。使用网络监视器一切正常(即,与DC通信时无错误)。我得到的错误是用户没有权限。从这个错误中,我可以看到用户是我的机器(MiddleWSServer$),而不是我的广告用户。