You are not logged in.
Pages: 1
Bonjour à tous,
Voici le problème que je rencontre.
J'ai développé en local un formulaire pour créer des tickets sur une installation de GLPI (9.4.2).
Avant d'accéder au formulaire, j'ai une page de login/mot de passe qui se connecte à l'api avec le script suivant :
//generate Token from user data
$token=base64_encode($dataObj->{'companyName'}.":".$dataObj->{'companyPass'});
// Init Session
$url = $api_url . "/initSession";
$headers1 = array(
('Content-Type: application/json'),
('App-Token:' .$app_token),
('Authorization: Basic '.$token)
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers1);
$session = curl_exec($ch);
curl_close ($ch);
$obj = json_decode($session,true);
$sess_token = $obj['session_token'];
$headers2 = array(
('Content-Type: application/json'),
('App-Token:'.$app_token),
('Session-Token: '.$sess_token)
);
// Request Profile Details
$url = $api_url . "/getFullSession";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers2);
$profile = curl_exec($ch);
curl_close ($ch);
En local tout fonctionne. J'utilise le token app-token provenant de Configuration\Général\Api (la clé provient de l'utilisateur créé par défaut full access from localhost)
En distant, sur mon site donc, idem. J'ai pris soin de retirer les restrictions d'adresse IP de ce même utilisateur.
Lorsque j'essaie de me connecter, j'ai une erreur ERROR_APP_TOKEN_PARAMETERS_MISSING (à la première requête) et je n'arrive pas à récupérer le session_token de l'utilisateur.
Si j'essaie de me connecter en direct, à savoir :
http://url.de.glpi/apirest.php/initSession?user_token=[USERTOKEN]&app_token=[APPTOKEN]
la clé APPTOKEN étant la même que dans mon script
la clé USERTOKEN étant celle de l'utilisateur que j'essaie de connecté
=> et là j'ai bien une initialisation de session
Je ne comprends pas d'où vient le problème.
Quelqu'un pour m'éclairer ?
Merci beaucoup à vous.
Offline
avez vous essayé de passer le app-token et user_token dans l'url et pas dans le header ?
vous ne vous connectez pas avec la même methode le script utilise basic : login+pw la connexion directe utilise usertoken. ça explique la différence de réponse.
avez vous essayé de faire l'autentification avec user_token dans l'API ? ( pour commencer et vérifier que ça marche comme l'url directe) ?
Trouver la panne avant de réparer...
GLPI10.0.16 (ubuntu 22.04 PHP8.1 Mariadb10.6 ) plugins : comportements 2.7.3 reports 1.16.0 formcreator 2.13.9, datainjection 2.13.5 fields 1.21.9
Offline
oui, je sais que ce n'est pas la même méthode
d'ailleurs, je ne connais pas la méthode pour passer le nom d'utilisateur et mot de passe dans l'url via authorization: basic
j'aurais aimé pouvoir tester si j'arrivais à me connecter en direct sans passer par le user_token, bref
Donc :
en utilisant le app_token et le user_token (jeton api de l'utilisateur que je veux connecter) directement dans l'url, cela fonctionne : je reçois un paramètre session_token
en utilisant l'user_token dans mon script, c-a-d via le header, comme suit :
$headers1 = array(
('Content-Type: application/json'),
('App-Token:' .$app_token),
('Authorization: user_token [USERTOKEN]')
);
j'ai toujours
ERROR_APP_TOKEN_PARAMETERS_MISSING
Enfin, si je passe la valeur de app_token en "dur" dans le header, c-a-d pas par le biais d'une variable comme suit :
$headers1 = array(
('Content-Type: application/json'),
('App-Token:[APPTOKEN]'),
('Authorization: user_token [USERTOKEN]')
);
j'ai également la même erreur :
ERROR_APP_TOKEN_PARAMETERS_MISSING
Incompréhensible.
Est-ce que ça ne peut pas venir de curl et de mon hébergeur (OVH) ?
Offline
je viens de vérifier sur les différentes instances :
ça marche bien sur mes serveurs en local, mais j'ai le même problème sur l'instance chez OVH ( glpi9.4.3)
pour me connecter je dois utiliser :
http://url.de.glpi/apirest.php/initSession?user_token=[USERTOKEN]&app_token=[APPTOKEN]
je continue à chercher.
Trouver la panne avant de réparer...
GLPI10.0.16 (ubuntu 22.04 PHP8.1 Mariadb10.6 ) plugins : comportements 2.7.3 reports 1.16.0 formcreator 2.13.9, datainjection 2.13.5 fields 1.21.9
Offline
Je suis à la fois content et pas content
Au moins, je ne suis pas fou.
J'avoue que j'ai cherché un petit moment sans trouver. Peut-être le problème vient-il directement d'une fonction dans GLPI.
Merci en tout cas de prendre le temps de chercher.
Offline
Pages: 1