alt*_*tiv 7 php soap web-services
我正在使用PHP5的本机SOAP方法创建Web服务.在我尝试使用SOAP Headers处理身份验证之前,一切都很顺利.
我可以很容易地找到如何将用户名/密码添加到SOAP标头,客户端:
$myclient = new SoapClient($wsdl, $options);
$login = new SOAPHeader($wsdl, 'email', 'mylogin');
$password = new SOAPHeader($wsdl, 'password', 'mypassword');
$headers = array($login, $password);
$myclient->__setSOAPHeaders($headers);
Run Code Online (Sandbox Code Playgroud)
但我无法找到任何收集和处理这些头服务器端的方法.我猜测必须有一种简单的方法来定义我的SoapServer中处理标题的方法......
SoapClient使用用户名和密码来实现HTTP身份验证.基本和摘要式身份验证是支持(请参阅源代码)
有关在服务器端在PHP中实现HTTP身份验证的信息,请参阅本手册页.
如果您不想使用HTTP身份验证,请参阅SoapServer手册页上的此用户提供的示例,其中显示了如何在UsernameToken标头中传递某些凭据.
使用现代PHP版本时,没有必要向WSDL添加任何内容,因为标头是SOAP Envelope规范的一部分.
Paul Dixon引用的用户贡献示例不起作用仅仅因为标题不是注释中写的UserToken,标题是Security,所以这是类方法应该具有的名称.然后你会得到一个很好的stdClass对象,它有一个UserToken stdClass对象属性,它具有Username和Password作为属性.
示例代码(要插入实现SOAP服务的PHP类中:
public function Security( $header ){
$this->Authenticated = true; // This should be the result of an authenticating method
$this->Username = $header->UsernameToken->Username;
$this->Password = $header->UsernameToken->Password;
}
Run Code Online (Sandbox Code Playgroud)
就像基于用户名/密码的WSSE Soap Security的魅力一样
| 归档时间: |
|
| 查看次数: |
11483 次 |
| 最近记录: |