【问题标题】:Impersonation fails when calling web method from SoapUI从 SoapUI 调用 Web 方法时模拟失败
【发布时间】:2019-04-09 16:55:26
【问题描述】:

我有一个 WCF 自托管 Web 服务(托管在本地系统帐户下的我的 Windows 服务中)。 Web 方法附有[OperationBehaviorAttribute(Impersonation = ImpersonationOption.Required)]。使用 NTLM 身份验证。

在我的 web 方法的实现中,我模拟调用者并做一些事情。为此,我使用ServiceSecurityContext.Current.WindowsIdentity。如果我在调用 Web 方法时没有提供正确的凭据,那么 Web 服务将返回“401 Unauthorized”。

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

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

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

【问题讨论】:

    标签: c# wcf soapui ntlm


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-25
      • 1970-01-01
      • 1970-01-01
      • 2015-08-19
      • 2020-04-26
      • 1970-01-01
      • 2022-08-17
      • 1970-01-01
      相关资源
      最近更新 更多