WCF Windows身份验证&x2B;服务器上的控制台应用程序

WCF Windows身份验证&x2B;服务器上的控制台应用程序,wcf,windows-authentication,Wcf,Windows Authentication,我有以下设置: WPF客户端调用WCF SerivceA。在这里,我使用了带有基本HTTP绑定的windows身份验证 SerivceA将从一个UNC路径调用一个批处理文件(.bat或.exe文件)。这很有效。批处理,因此在批处理中调用的exe将执行 执行的exe现在调用ServiceB。在这里,它失败了。错误是: HTTP请求未经客户端身份验证方案“协商”授权。从服务器接收的身份验证标头为“协商” 这似乎是exectued exe无法传递AD用户帐户。它通过了以下程序: IIS APPPOOL

我有以下设置:

  • WPF客户端调用WCF SerivceA。在这里,我使用了带有基本HTTP绑定的windows身份验证

  • SerivceA将从一个UNC路径调用一个批处理文件(.bat或.exe文件)。这很有效。批处理,因此在批处理中调用的exe将执行

  • 执行的exe现在调用ServiceB。在这里,它失败了。错误是: HTTP请求未经客户端身份验证方案“协商”授权。从服务器接收的身份验证标头为“协商”

  • 这似乎是exectued exe无法传递AD用户帐户。它通过了以下程序: IIS APPPOOL\user1,它不是AD用户,这就是它失败的原因

    为了解决这个问题,我在ServiceA尝试了模拟,这样我就可以在调用方的凭据下调用批处理文件。但是没有运气。我也尝试过授权


    这里的问题是什么?

    您没有解释您是从哪个IPrincipal执行委派或模拟的,但您只能在服务器正确配置的情况下使用委派,否则,它将只接受执行请求的最小特权帐户。

    我最终为IIS创建了一个特定用户,并将其注册到应用程序池。因此,现在默认情况下,这些操作都是以该用户的身份进行的,一切正常。

    是。关于服务器,您是对的。我想它没有配置为多个网络跳。因此,情况可能是这样。但我是否需要模仿?这种通信可以通过简单的windows身份验证来完成吗?这取决于,如果您使用委派,那么这意味着发出请求的帐户已经在您的服务器中注册和授权,通常在企业中不是这样(您的用户通常是干净的,服务器中没有角色)。如果您使用模拟,这意味着您应该提供一个帐户,该帐户具有您的广告知道的特定角色,通常这些帐户已在您的公司中为特定目的创建