Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net WCF kerberos委派到同一台计算机上的服务_Asp.net_Wcf_Iis_Active Directory_Kerberos - Fatal编程技术网

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$),而不是我的广告用户。