【问题标题】:Webservice call from WCF service来自 WCF 服务的 Web 服务调用
【发布时间】:2016-09-07 22:15:05
【问题描述】:

我们有一个现有的 Web 服务 (SOAP/XML),它经过 Windows 身份验证。我们正在添加一个具有匿名身份验证的新 WCF 服务。从 WCF 服务调用现有 Web 服务的函数时,出现以下错误

请求失败,HTTP 状态为 401:未授权。

我们确实有其他控制台和 Web 应用程序可以毫无问题地调用现有服务。

我尝试将UseDefautlCredentials 设置为True 并没有什么不同(WS.UseDefaultCredentials = True)。

还尝试将现有服务添加为服务引用而不是 Web 引用,但我得到了不同的错误

HTTP 请求未经客户端身份验证方案“匿名”授权。从服务器收到的身份验证标头是“协商,NTLM”。

我真的不想在现有 Web 服务上将身份验证更改为匿名,因为它已经过 AD 身份验证。

非常感谢任何形式的帮助。非常感谢。

【问题讨论】:

  • 有任何代码要发布吗?
  • @L.B 非常直接......

标签: c# .net vb.net web-services wcf


【解决方案1】:

您的问题是所谓的双跳。 您有一些选择,使用 kerberos,在调用肥皂服务或模拟 wcf 服务时向您的代码传递有效凭据,但您必须对其进行测试。 <serviceAuthorization impersonateCallerForAllOperations="true" />

【讨论】:

  • 谢谢,凭据不会进入现有的 Web 服务是有道理的。我确实尝试了<serviceAuthorization impersonateCallerForAllOperations="true" /> 并且必须设置<OperationBehavior(Impersonation:=ImpersonationOption.Required)> 才能使其工作。我现在收到另一个错误 > 未提供所需的模拟级别,或者提供的模拟级别无效。我也尝试设置endpointBehavior<windows allowedImpersonationLevel="Impersonation" /> 这样没有帮助。不幸的是,Kerberos 或传递凭据不是一种选择。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-23
  • 1970-01-01
  • 1970-01-01
  • 2012-06-14
  • 1970-01-01
相关资源
最近更新 更多