web-services - 对 SAP PI 服务进行匿名身份验证的未经授权的 HTTP 请求

标签 web-services wsdl sap sap-xi sap-pi

我有一个来自我们客户公司的 .WSDL 文件,我需要使用它来调用 Web 服务。他们的系统是 SAP (SAP PI)。我的应用程序是在 VS 2008 中开发的 C# .NET 3.5 客户端。我使用他们提供的 .WSDL 文件在 Visual Studio 中添加了服务引用。这为我创建了一个引用类来调用他们的服务,并为我在 app.config 文件中设置了几个绑定(bind)。

我没有更改 app.config 文件中的任何内容,但确实创建了代码来调用他们的 Web 服务。但是,当我调用他们的网络服务时,我收到以下异常:

HTTP 请求未经客户端身份验证方案“匿名”授权。从服务器收到的身份验证 header 是“Basic realm="SAP NetWeaver Application Server ..."”。

(我稍微修改了“基本领域”部分中使用的字符串,以免泄露。)

app.config 没有从 WSDL 正确构建吗?我应该以某种方式修改 app.config 文件吗?

我尝试过的事情:

  • 将 app.config 中的 authenticationScheme 从 Anonymous 更改为 Basic
    (以及所有其他身份验证类型)
  • 更改 app.config 中的领域字符串以匹配异常消息中的领域
  • 在我的代码中的 ClientCredentials.Username 对象中设置用户名/密码字段

  • 任何指示或帮助将不胜感激。

    编辑:经过更多调查,我发现 Visual Studio 有几个关于扩展元素 Policy 和 Policy 断言的警告:
  • 自定义工具警告:可选的 WSDL 扩展元素“策略”
    来自命名空间'http://schemas.xmlsoap.org/ws/2004/09/policy' 不是
    处理。
  • 自定义工具警告:未导入以下策略断言:
    XPath://wsdl:definitions[@targetNamespace='urn:sap-com:document:sap:rfc:functions']/wsdl:binding[@name='Binding_FieldValidation']
    断言:...

  • 我无法确定这是否与我当前的身份验证方案问题有关。它似乎确实是相关的,但我也找不到任何解决方案来解决这些政策警告。似乎 WCF 不能很好地处理 wsdl 中的语句。

    最佳答案

    大多数 SAP 服务不支持匿名。
    因此,通过调用传递某种形式的身份验证数据。
    用户名和密码/X.509 Ticket...

    如果您通过调用发送身份验证数据,请尝试此

    让 SAP 人员重新生成 WSDL
    没有 SAP 断言,没有策略,SOAP 1.1。
    您还可以尝试手动编辑 WSDL 以删除多余的废话...

    关于web-services - 对 SAP PI 服务进行匿名身份验证的未经授权的 HTTP 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14386613/

    相关文章:

    c# - 将部分填充的 DTO 映射到域对象

    java - urllib2 从已启动的 Web 服务返回 HTTP 404

    c++ - C 和 C++ 中的 Web 服务

    ios - 通过 Relay Server 连接 iOS App SAP-SUP

    c# - 数据包格式不正确,使用 WSDL 文件从 C# 调用 SAP 服务

    java - 生成xs :date instead of xs:dateTime for WebParam

    java - 如何在 JAX-WS CXF 处理程序中获取 SOAP 方法

    python - sud 中的属性和值

    java - 从 wsdl 创建 SOAP 请求

    ios - Lib 导入问题 : Where is located SUPApplication. h 和 SUPConnectionProperties.h?