Веб-сервис NuSoap PHP с мыльными заголовками - PullRequest
1 голос
/ 09 октября 2011

Мне интересно, как реализовать проверку подлинности заголовка soap на сервере веб-службы soap с использованием библиотеки NuSoap.

Я видел много примеров о клиенте NuSoap, но хочу реализовать это на сервере.

Спасибо, тк

Ответы [ 2 ]

0 голосов
/ 20 сентября 2013

Объект soapserver содержит заголовок soap в виде ассоциативного массива в свойстве requestHeader, поэтому, если вы сможете найти способ получить экземпляр сервера из своей функции, вы сможете получить soapHeader.

<?php
require_once './nusoap/nusoap.php';

//Declare the server as a global, for brevity
global $server;

//Instantiate, configure and run as usual
$server = new nusoap_server();
$server->configureWSDL("namespace...", "...");
$server->register("myHandler");
$server->service(isset($GLOBALS['HTTP_RAW_POST_DATA']) ? $GLOBALS['HTTP_RAW_POST_DATA'] : '');

//My handling function:
function myHandler() {
    //Get your server instance:
    global $server;

    //Abra Kadabra alakazam! your soap header :D
    var_dump($server->requestHeader);
}

Очевидно, что для этого существуют лучшие практики кодирования, но вы поняли. Также whatchout для свойства requestHeader s , поскольку оно содержит заголовки HTTP, а не заголовок SOAP, помните: requestHeader БЕЗ завершающего 's' - ваш парень.

Надеюсь, это поможет

0 голосов
/ 31 октября 2011
    $client->setHeaders('<wsse:Security S:mustUnderstand="1">
            <wsu:Timestamp xmlns:ns15="http://schemas.xmlsoap.org/ws/2006/02/addressingidentity" xmlns:ns14="http://docs.oasis-open.org/ws-sx/ws-secureconversation/200512" xmlns:ns13="http://www.w3.org/2003/05/soap-envelope" wsu:Id="_1">
                <wsu:Created>createdDate</wsu:Created>
                <wsu:Expires>expireDate</wsu:Expires>
            </wsu:Timestamp>
            <wsse:UsernameToken xmlns:ns15="http://schemas.xmlsoap.org/ws/2006/02/addressingidentity" xmlns:ns14="http://docs.oasis-open.org/ws-sx/ws-secureconversation/200512" xmlns:ns13="http://www.w3.org/2003/05/soap-envelope" wsu:Id="uuid_25007e25-6a0a-4a0c-9c3e-0d332f262cdc">
                <wsse:Username>username</wsse:Username>
                <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">password</wsse:Password>
            </wsse:UsernameToken>
        </wsse:Security>');
...