【问题标题】:How to require Authentication Soap Header in WSDL?如何在 WSDL 中要求身份验证 Soap 标头?
【发布时间】:2012-01-01 08:58:05
【问题描述】:

我使用SOAPServer 在php 中创建了一个Web 服务。它希望看到带有用户名和密码元素的SoapHeader UsernameToken。当我在请求中包含此标头时,一切实际上都很好。只需在名为“UsernameToken”的 Soap 处理程序类中定义一个方法,就会调用该方法并将 stdClass Obj 传递给它。然后我可以通过$Obj->username$Obj->password 验证用户。

我不知道要在 WSDL 文件中添加什么,首先定义此 UsernameToken 标头,其次如何在 WSDL 中指示它是必需的?

我在某处读到新的 SOAP 标准弃用了“必需”标头的概念。

关于如何至少表明我的 wsdl 请求应包含此标头的任何建议?

【问题讨论】:

  • 您能否将链接添加到您已阅读到新 SOAP 标准已弃用“必需”标头的概念的地方?
  • 您能展示一下您当前的 WSDL 吗?

标签: php soap wsdl


【解决方案1】:

长答案。请参阅this 帖子。

在客户端中,您可以使用 mustUnderstand 属性来指示标题条目对于收件人处理是强制性的还是可选的。如果服务器不能或不想处理强制标头,它必须向客户端抛出 SOAP 错误。

【讨论】:

    【解决方案2】:

    您是否查看了section 2.1.3http://www.w3.org/TR/wsdl。我也找不到任何需要贬低的东西。

    【讨论】:

      【解决方案3】:

      以下是指定登录名的 WSDL 示例:https://ws1.webservices.nl/soap_doclit?wsdl

      <binding name="Webservices.nlBinding" type="tns:Webservices.nlPortType">
      <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
      <operation name="login">
      <soap:operation soapAction="https://ws1.webservices.nl/soap_doclit.php/login" style="document"/>
      <input>
      <soap:body use="literal"/>
      <soap:header message="tns:Headers" part="HeaderLogin" use="literal"/>
      <soap:header message="tns:Headers" part="HeaderAuthenticate" use="literal"/>
      </input>
      

      【讨论】:

      • 您的回答实际上并没有回答以下问题:“如何在 WSDL 中表明它是必需的?”毕竟这是一个票价起点。
      猜你喜欢
      • 2021-08-25
      • 1970-01-01
      • 1970-01-01
      • 2017-04-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-25
      • 1970-01-01
      相关资源
      最近更新 更多