È necessario connettersi a un servizio Web che richiede credenziali di autenticazione sotto forma di nome utente e password in testo normale.Autenticazione SOAP con PHP
Ho una conoscenza di base di SOAP e sono riuscito a collegarmi ad altri servizi Web aperti che non richiedono un nome utente o una password utilizzando NuSOAP.
Quanto segue è stato inviato a me:
<?php
// Set up security options
$security_options = array("useUsernameToken" => TRUE);
$policy = new WSPolicy(array("security" => $security_options));
$security_token = new WSSecurityToken(array(
"user" => "xxx",
"password" => "xxx",
"passwordType" => "basic"));
// Create client with options
$client = new WSClient(array("wsdl" => "https://xxx.asmx?wsdl",
"action" => "http://xxx",
"to" => "https://xxx",
"useWSA" => 'submission',
"CACert" => "cert.pem",
"useSOAP" => 1.1,
"policy" => $policy,
"securityToken" => $security_token));
// Send request and capture response
$proxy = $client->getProxy();
$input_array = array("From" => "2010-01-01 00:00:00",
"To" => "2010-01-31 00:00:00");
$resMessage = $proxy->xxx($input_array);
?>
Dopo alcune ricerche ho capito che quanto sopra implementazione utilizza WSO2. Devo essere in grado di farlo senza usare wso2.
Ho fatto del mio meglio per cercare risorse (Google, forum, ecc.) Riguardo a quanto sopra ma non sono stato in grado di trovare nulla. Ho letto alcuni tutorial su SOAP e sono stato in grado di configurare un client SOAP usando PHP, ma non riesco a capire come funziona l'autenticazione e le "politiche".
Una spiegazione su come ottenere questo e forse alcuni link a ulteriori informazioni su questo sarebbe molto apprezzato come sto strappando i capelli! Idealmente vorrei alcuni collegamenti alle risorse per un principiante assoluto all'autenticazione SOAP.
Grazie. P.S alcuni dei link/credenziali di cui sopra potrebbero essere stati xxx'd per la privacy.
ho provato quanto sopra e anche incluso i parametri extra dal mio codice originale a $ soapFunctionParameters ma sto ottenendo l'eccezione "Azione per il destinatario finale è richiesta ma non presente nel messaggio". Cosa ne pensi della funzione WSPolicy e WSSecurity token? Ancora una volta, sono davvero un elemosina per questo. –
FYI- $ soapFunctionParameters in $ soapResult = ... soapCall() è scritto in modo errato. Mi sono imbattuto in questo mentre cercavo queste informazioni e stavo usando il tuo codice per testare. Può essere irrilevante dal 2010. – Travis
@guss In che modo il server di sapone quindi autentica i dati di accesso passati con l'array '$ soapParameters' al soapclient? Nel mio script PHP soap server, '$ _SERVER ['PHP_AUTH_USER']' non è impostato, quindi come dovrei convalidare? –