Jump to content

Webservice PS 1.7 erreur 401 connexion non authorisée


csid
 Share

Recommended Posts

Bonjour,

j'essaye d'utiliser le webservcie sur un PS 1.7.4.2 mais j'obtiens dès la tentative de connexion une erreur 401

mon code :

define('DEBUG', true);											// Debug mode
define('PS_SHOP_PATH', 'http://ssdom.site.com/');							// Root path of your PrestaShop store
define('PS_WS_AUTH_KEY', 'macle_cree_dans_PS');	// Auth key (Get it in your Back Office)
require_once('./PSWebServiceLibrary.php');
// Here we make the WebService Call
try
{
	$webService = new PrestaShopWebservice(PS_SHOP_PATH, PS_WS_AUTH_KEY, DEBUG);
	// Here we set the option array for the Webservice : we want customers resources
	$opt['resource'] = 'customers';
	// We set an id if we want to retrieve infos from a customer
	if (isset($_GET['id']))
		$opt['id'] = (int)$_GET['id']; // cast string => int for security measures
	// Call
	$xml = $webService->get($opt);
	// Here we get the elements from children of customer markup which is children of prestashop root markup
	$resources = $xml->children()->children();
}
catch (PrestaShopWebserviceException $e)
{
	// Here we are dealing with errors
	$trace = $e->getTrace();
	if ($trace[0]['args'][0] == 404) echo 'Bad ID';
	else if ($trace[0]['args'][0] == 401) echo 'Bad auth key';
	else echo 'Other error<br />'.$e->getMessage();
}

Mais j'obtiens ces erreurs :

HTTP REQUEST HEADER

GET //api/customers HTTP/1.1
Authorization: Basic UkJGUzQ5SVAzRk5NOUs3TDJUNVRGMkc3RkZDTVdYQ0E6
Host: 2019.beeper.fr
Accept: */*

HTTP RESPONSE HEADER

HTTP/1.1 401 Unauthorized
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Connection: keep-alive
Keep-Alive: timeout=15
Date: Wed, 28 Nov 2018 15:53:21 GMT
Server: Apache
X-Powered-By: PHP/5.6.38
WWW-Authenticate: Basic realm="Welcome to PrestaShop Webservice, please enter the authentication key as the login. No password required."
Set-Cookie: PrestaShop-f9c74bffb53d7d9edde262e3402521eb=def50200e5a339e903c1a16d938a1588c0f13165aeda2da6884d8b8d5355df31526b29c6a92b55a0448d8093c91f4349b204080ce8ce1b9f3a1ec2a27eae66baea68701d445fc2113fc09229a1f5dc24557e512337be46367f96e6ac0cafc74ddfc4ef5468477d05ac42efcfc2f554b7b88a553d5813ed282b826665dd7501a393c2a3d3e2aec07aded28e56b459f876588918cbf533c9f58b3658675ff17df9224d; expires=Tue, 18-Dec-2018 15:53:21 GMT; Max-Age=1728000; path=/; domain=2019.beeper.fr; secure; httponly

RETURN HTTP BODY

401 Unauthorized

Bad auth key

Après de nombreux tests j'ai essayé un accès direct dans le navigateur :

https://[email protected]/api/  ==> ne fonctionne pas (erreur 401 unauthorized)
https://ssdom.monsite.com/api/customers/?ws_key=ma_cle   ==> Fontionne ! (je recupère mes clients)

Comme vous pouvez le voir j'ai en fait juste fait un copier coller de l'exemple donné par prestashop pour l'utilisation du webservice avec la classe PSWebServiceLibrary.php.

Qu'est ce que je ne fais pas correctement ...?

Hervé

Share this post


Link to post
Share on other sites

  • 1 year later...

Bonjour,

Je suis également intéressé par la solution à ce problème : j'essaie de consommer le webservice Prestashop via SalesForce et effectivement, avec la première URL (comme donnée dans la doc Prestashop) cela ne fonctionne pas, alors qu'avec la seconde URL, cela fonctionne.

Merci

Share this post


Link to post
Share on other sites

  • 1 month later...
  • 1 month later...
  • 6 months later...
  • 1 month later...

J'ai exactement le même problème en javascript avec fetch(). J'arrive à récupérer la data uniquement quand je passe la clé API dans l'URL après le paramètre ws_key.

Sinon, impossible de récupérer la data en spécifiant la clé API dans le header d'une quelconque manière que ce soit. (La réponse est toujours 401 : Non autorisé).

J'ai pourtant essayé de modifier le fichier webservice/dispatcher.php en ajoutant ces lignes  :

header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: GET,POST,PUT,DELETE,OPTIONS,PATCH');
header('Access-Control-Allow-Headers: Content-Type, Authorization');
header('Access-Control-Allow-Credentials: true');

Si un pro Prestashop saurait nous éclairer, il est le bienvenue ! 😁

Share this post


Link to post
Share on other sites

Bom dia,

A nossa loja online Blume Home , quado estamos a criar um novo artigo para o blog e gravamos para activar no site, aparece o erro de 404. Antes aparecia o erro 501. Já verificamos caches, atualizámos a pagina, continua o mesmo erro.

Será que nos podem ajudar a resolver este problema? Agradecemos a vossa ajuda.

obrigado

Share this post


Link to post
Share on other sites

  • 1 month later...

Même souci et si je tente un essai dans le navigateur, j'ai en boucle une demande ....

Edit:

en ajoutant dans le .htaccess les règles suivantes après RewriteEngine on
 

RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule . - [E=HTTP_AUTHORIZATION:%1]

Cela fonctionne. En revanche je ne sais pas comment faire dans le cas d'un module sans ajouter ceci manuellement....

 

Edited by celeg (see edit history)
  • Like 1

Share this post


Link to post
Share on other sites

  • 1 month later...
On 3/3/2021 at 11:48 AM, celeg said:

Même souci et si je tente un essai dans le navigateur, j'ai en boucle une demande ....

Edit:

en ajoutant dans le .htaccess les règles suivantes après RewriteEngine on
 

RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule . - [E=HTTP_AUTHORIZATION:%1]

Cela fonctionne. En revanche je ne sais pas comment faire dans le cas d'un module sans ajouter ceci manuellement....

 

Hello !

Je reviens sur la question.

La règle effectivement fonctionne. Mais Prestashop régénère régulièrement le .htaccess... et efface les 2 lignes.

Donc, solution : mettre les 2 lignes en dehors des commentaires... Mais ou??? en premier ? à la fin ? apparemment si on ne met que ces deux lignes ça ne fonctionne pas. Faut-il rajouter quelque chose ???

 

Share this post


Link to post
Share on other sites

Bon, en fait j'ai placé ces lignes en début du .htaccess pour éviter que Prestashop ne les efface :

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule . - [E=HTTP_AUTHORIZATION:%1]
</IfModule>

# ~~start~~ Do not remove this comment, Prestashop will keep automatically the code outside this comment when .htaccess will be generated again
# .htaccess automaticaly generated by PrestaShop e-commerce open-source solution

Et ça fonctionne !

Est-ce que celà vous semble correct ? Est-ce que ça ne compromet pas l'intégrité ou la sécurité du .htacces ??

 

  • Like 1

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More