首页 文章

如何在WSDL中要求身份验证肥皂头?

提问于
浏览
6

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

我不知道要添加到WSDL文件中的内容首先定义这个 UsernameToken 头,然后如何在WSDL中指示它是必需的?

我在某处读到过新的SOAP标准不赞成“必需” Headers 的概念 .

关于如何至少指出的任何建议是我的wsdl请求应该包括这个 Headers ?

3 回答

  • 1

    以下是指定登录的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>
    
  • 1

    你看过http://www.w3.org/TR/wsdlsection 2.1.3了吗?我也找不到任何需要被剥夺的东西 .

  • 3

    答案很长 . 见this帖子 .

    在客户端中,您可以使用mustUnderstand属性来指示标头条目是必需的还是可选的,以供收件人处理 . 如果服务器不能或不想处理强制标头,则必须向客户端抛出SOAP Fault .

相关问题