0

nuSOAPヘッダーを解析username/password/Signatureし、以下のSOAPリクエストからチェックする方法を教えてください。

<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>

つまり、サーバー側でこのヘッダーを解析し、すべてのリクエストの資格情報を検証する必要があります。

4

1 に答える 1

2

よくわかりませんが、次のコードを使用して資格情報を追跡する別の方法を見つけました。説明させてください。

SOAPリクエスト全体をサーバー側に返すコード$sSoapRequest = file_get_contents('php://input');...

次の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()サーバー側のすべてのプロセスにメソッドを使用します。

于 2012-04-12T10:33:42.767 に答える