【问题标题】:nuSOAP: Header Authentication on server sidenuSOAP:服务器端的标头身份验证
【发布时间】:2012-04-11 15:58:29
【问题描述】:

任何人都可以建议如何解析 nuSOAP 标头并从下面的 SOAP 请求中检查 username/password/Signature

<SOAP-ENV:Header>
    <SOAP-ENV:Header xmlns:wsa="http://admin.example.com">
      <Username>testuser</Username>
      <Password>test123456</Password>
      <Signature>5595610031002</Signature>
    </SOAP-ENV:Header>
  </SOAP-ENV:Header>

即:我需要在服务器端解析此标头并验证每个请求的凭据。

【问题讨论】:

    标签: php nusoap


    【解决方案1】:

    我不确定,但我找到了使用以下代码跟踪凭据的替代方法。 让我解释一下。

    代码$sSoapRequest = file_get_contents('php://input');将整个SOAP请求返回给服务器端...

    以下 2 个函数帮助我带出值..

    function doAuthenticate()
    {
        $sSoapRequest = file_get_contents('php://input');
        if(isset($sSoapRequest))
        {
            $sUsername = hookTextBetweenTags($sSoapRequest, 'Username');
            $sPassword = hookTextBetweenTags($sSoapRequest, 'Password');
            $sSignature = hookTextBetweenTags($sSoapRequest, 'Signature');
            if($sUsername=='testuser' && $sPassword=='test123456' && $sSignature=='5595610031002')
                return true;
            else
                return false;
        }
    }
    function hookTextBetweenTags($string, $tagname) {
        $pattern = "/<$tagname ?.*>(.*)<\/$tagname>/";
        preg_match($pattern, $string, $matches);
        return $matches[1];
    }
    

    并且,对服务器端的每个进程使用doAuthenticate() 方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-02-26
      • 2011-11-04
      • 1970-01-01
      • 1970-01-01
      • 2012-03-23
      • 2020-04-22
      • 2012-08-28
      相关资源
      最近更新 更多