
[英]How to pass authentication header for WSDL XML with PHP soap?
[英]How to require Authentication Soap Header in WSDL?
我使用SOAPServer
在php中创建了一个Web服务。 它希望看到一个带有用户名和密码元素的SoapHeader
UsernameToken
。 当我在请求中包含此标头时,一切都工作正常。 只需在名为“UsernameToken”的Soap处理程序类中定义一个方法,就会调用此方法并将stdClass Obj传递给它。 然后我可以通过$Obj->username
和$Obj->password
来验证用户。
我不知道要添加到WSDL文件中的内容首先要定义此UsernameToken
标头,然后如何在WSDL中指示它是必需的?
我在某处读到过新的SOAP标准不赞成“必需”标题的概念。
关于如何至少指出的任何建议是我的wsdl请求应该包括这个标题?
以下是指定登录的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>
您是否看过http://www.w3.org/TR/wsdl的 2.1.3节 。 我也找不到任何需要被剥夺的东西。
答案很长。 看这篇文章。
在客户端中,您可以使用mustUnderstand属性来指示标头条目是必需的还是可选的,以供收件人处理。 如果服务器不能或不想处理强制标头,则必须向客户端抛出SOAP Fault。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.