Jump to content

[Résolu] Test WebService identification


Recommended Posts

Bonjour à tous,

 

 

Je test actuellement PrestaShop chez ovh sur un mutualisé. J'ai lu sur le forum le problème lié à $_SERVER['PHP_AUTH_USER'].

 

En bref quelqu'un serait'il me dire ce qui ne va pas pas dans cette regle ?

 

RewriteRule ^api/?(.*)$ /PrestaShop/webservice/dispatcher.php?url=$1 [E=REMOTE_USER:%{HTTP:Authorization},QSA,L]

 

Puis je le traite come ça :

 

if((!$_SERVER['PHP_AUTH_USER'] || !$_SERVER['PHP_AUTH_USER']) && preg_match('/Basics+(.*)$/i', $_SERVER['REMOTE_USER'], $matches)) {
list($name, $password) = explode(':', base64_decode($matches[1]));
$_SERVER['PHP_AUTH_USER'] = strip_tags($name);
$_SERVER['PHP_AUTH_PW'] = strip_tags($password);
}
if (isset($_SERVER['PHP_AUTH_USER']))
$key = $_SERVER['PHP_AUTH_USER'];
elseif (isset($_GET['ws_key']))
$key = $_GET['ws_key'];
else
{
header($_SERVER['SERVER_PROTOCOL'].' 401 Unauthorized');
header('WWW-Authenticate: Basic realm="Welcome to PrestaShop Webservice, please enter the authentication key as the login. No password required."');
die;
}

 

Mais cela ne donne rien de bon, si quelqu'un a une idée ?

Link to comment
Share on other sites

Auto réponse

 

Bien galéré, du coup je met la soluce trouvée :

Créer un ".htaccess" dans le dossier "webservice", contenant :

<IfModule mod_rewrite.c>
  RewriteEngine on
  RewriteRule .* - [E=REMOTE_USER:%{HTTP:Authorization},L]
</IfModule> 

 

Modifier les lignes du fichier "webservice/dispatcher.php", contenant :

// Use for image management (using the POST method of the browser to simulate the PUT method)
$method = isset($_REQUEST['ps_method']) ? $_REQUEST['ps_method'] : $_SERVER['REQUEST_METHOD'];
if (isset($_SERVER['PHP_AUTH_USER']))
$key = $_SERVER['PHP_AUTH_USER'];
elseif (isset($_GET['ws_key']))
$key = $_GET['ws_key'];
else
{
header($_SERVER['SERVER_PROTOCOL'].' 401 Unauthorized');
header('WWW-Authenticate: Basic realm="Welcome to PrestaShop Webservice, please enter the authentication key as the login. No password required."');
die;
}

 

par

 

// Use for image management (using the POST method of the browser to simulate the PUT method)
$method = isset($_REQUEST['ps_method']) ? $_REQUEST['ps_method'] : $_SERVER['REQUEST_METHOD'];
if(!isset($_SERVER['PHP_AUTH_USER']) && preg_match('/Basic\s+(.*)$/i',$_SERVER['REMOTE_USER'],$matches)){
list($name,$pass)=explode(':',base64_decode($matches[1]));
 $_SERVER['PHP_AUTH_USER']=strip_tags($name);
}
if (isset($_SERVER['PHP_AUTH_USER']))
$key = $_SERVER['PHP_AUTH_USER'];
elseif (isset($_GET['ws_key']))
$key = $_GET['ws_key'];
else
{
header($_SERVER['SERVER_PROTOCOL'].' 401 Unauthorized');
header('WWW-Authenticate: Basic realm="Welcome to PrestaShop Webservice, please enter the authentication key as the login. No password required."');
die;
}

 

En espérant que ca puisse éviter une tite nuit blanche à d'autre :)

  • Like 1
Link to comment
Share on other sites

  • 1 year later...
  • 1 year later...

Bonjour,

 

j'ai ce même problème sur un hébergement ovh mutualisé et un prestashop 1.6

J'ai testé ce script et cela ne fonctionne pas.

 

J'ai vu sur le forum ovh ce problème, j'ai testé les recommendations mais toujours rien.

Avez-vous une idée?

 

Voilà ce qui a été fait :

 

 

sur les serveur qui utilise fgci les variables PHP_AUTH_USER et PHP_AUTH_PW reste vide

il faut faire une regle de reecriture avec un header REMOTE_USER dans le .htaccess
ex :
RewriteRule ^(.*) /index.php$1 [E=REMOTE_USER:%{HTTP:Authorization},L]

et recuperé par


if (!empty($_SERVER['REDIRECT_REMOTE_USER'] ))
list($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']) = explode(':' , base64_decode(substr($_SERVER['REDIRECT_REMOTE_USER'], 6)));

Link to comment
Share on other sites

  • 5 years later...

Merci Slayes, même problème en 2020 avec un VPS OVH et PrestaShop 1.7.6 => "401 Unauthorized - Welcome to PrestaShop Webservice, please enter the authentication key as the login."

Ca marche  parfaitement après avoir appliqué tes modifs 👍

Link to comment
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
×
×
  • Create New...