从SoapUI调用Web方法时,模拟失败

时间:2019-04-09 16:55:27

标签: c# wcf soapui ntlm

我有一个WCF自托管Web服务(在Windows服务中以“本地系统”帐户托管)。 Web方法已附加GET /api/1 。使用NTLM身份验证。

在我的Web方法的实现中,我模拟了调用者并做一些事情。为此,我使用[OperationBehaviorAttribute(Impersonation = ImpersonationOption.Required)]。如果在调用Web方法时未提供适当的凭据,则Web服务将返回“ 401未经授权”。

当我从Chrome调用该方法时,Windows身份和模拟非常有用。我可以在模拟用户下创建一个新进程,该进程将在该用户的Windows会话中生成(不同于0)。当我在“ ServiceSecurityContext.Current.WindowsIdentity”首选项中添加“ localhost”字符串时,Firefox也可以工作。但是,当SoapUI调用该方法时,则无法正确设置此Windows身份。调用了Web方法,因此NTLM可以在某种程度上起作用,但是它不能正常工作。调用network.automatic-ntlm-auth.trusted-uris返回false(ServiceSecurityContext.Current.WindowsIdentity.Owner.IsAccountSid()不是用户帐户,而是内置的“管理员”组)。在模拟时创建新进程将在Windows会话0中创建它。

我研究了与Wireshark的HTTP通信,并且Chrome和SoapUI之间的NTLM握手看起来有所不同。不知道该如何处理这些信息。

如何使SoapUI与我的Web服务和NTLM正常工作?

1 个答案:

答案 0 :(得分:0)

虽然我不知道如何使用WCF解决问题,但我切换到了Web API和OWIN,现在我有了一个可行的解决方案。