Problème d'authentification / Requete wdsl Soap
Bonjour à tous,
je cherche a créer un appel vers un webservice (wsdl/soap), mais je bute sur un soucis pour m'authentifier. C'est la première fois que j'utilise ce genre d'appel et de syntaxe, et malgré pas mal de temps passé sur les forums et autres, je n'ai malheureusement pas trouvé la solution. J'ai essayé plusieurs méthodes sans succès.
Voici le code que j'utilise :
Méthode 1
Code:
1 2 3 4 5 6 7
|
$client_url = 'http://server.com/applicatifs.wsdl';
$options['exceptions'] = TRUE;
$options['trace'] = TRUE;
$client = new SoapClient($client_url, $options);
$headers = new SoapHeader("http://www.llnw.com/Reporting","AuthHeader",array("Username"=>"login","Password"=>"password"));
$response = $client->__soapCall("operation",array('valeur'),NULL,$headers); |
J'obtiens un "Accès refusé".
Méthode 2
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
|
$client_url = 'http://server.com/applicatifs.wsdl';
$options['exceptions'] = TRUE;
$options['trace'] = TRUE;
$client = new SOAPClient($client_url, $options);
$username = 'login';
$password = 'password';
$wsse_ns = 'http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd';
$security = new SoapVar(
array(new SoapVar(
array(
new SoapVar($username, XSD_STRING, NULL, NULL, 'username', $wsse_ns),
new SoapVar($password, XSD_STRING, NULL, NULL, 'password', $wsse_ns),
),
SOAP_ENC_OBJECT,
NULL,
NULL,
'UsernameToken',
$wsse_ns
)),
SOAP_ENC_OBJECT
);
$headers[] = new SoapHeader($wsse_ns, 'Security', $security, FALSE);
$client->__setSoapHeaders($headers);
$response = $client->__soapCall("operation",array('valeur')); |
De même, accès refusé.
Voici le schéma du wdsl :
Code:
1 2 3 4 5 6 7 8 9 10 11 12
|
<wsdl:types xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://server.com/">
<xsd:complexType name="AuthHeader">
<xsd:sequence>
<xsd:element name="username" type="xsd:string"/>
<xsd:element name="password" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
<xsd:element xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="AuthHeaderElement" type="tns:AuthHeader"/>
</xsd:schema>
</wsdl:types> |
Voici le schéma de l'opération :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
|
Operation type:Request-response. The endpoint receives a message, and sends a correlated message.
SOAP action:http://server.com/operation
Input:operationRequest (soap:body, use = literal, part = AuthHeader)
AuthHeader type AuthHeaderElement
username type string
password type string
valeur type int
Output:operationResponse (soap:body, use = literal, part = AuthHeader)
AuthHeader type AuthHeaderElement
username type string
password type string
result type string |
Voilà pour les infos. Avez vous une idée pour résoudre ce soucis d'authentification lorsque je lance une requête ?
Merci pour votre aide.