libertempo / web

Application web de gestion des congés en ligne
GNU General Public License v2.0
66 stars 63 forks source link

Authentification impossible v1.10 > v1.11 #700

Closed srvlib closed 6 years ago

srvlib commented 6 years ago

Bonjour, j'ai essayé toutes les pistes proposées dans le bug ( #666 ) mais en vain.

Système et application Système d'exploitation du serveur : ubuntu 16.04 Serveur HTTP et version : APACHE/2.4.18 Version MySQL et PHP : PHP 7.0.22 Mysql 5.7.17 Navigateur et version : firefox 61.0.2php Version de l'application : 1.11 Méthodes de connexion [interne / ldap / sso] :interne

j' obtiens bien une réponse au format json,

j'ai modifier le fichier cfg/env.php pour passer ENV_PROD à ENV_DEV ajouter une ligne contenant ddd($e); ici

La page affiche cela :

Fatal error: Uncaught BadMethodCallException: The EasyHandle has been released in /var/www/Libertempo-web-1.10/vendor/guzzlehttp/guzzle/src/Handler/EasyHandle.php:90 Stack trace: #0 [internal function]: GuzzleHttp\Handler\EasyHandle->__get('handle') #1 /var/www/Libertempo-web-1.10/vendor/raveren/kint/inc/kintParser.class.php(496): ReflectionProperty->getValue(Object(GuzzleHttp\Handler\EasyHandle)) #2 /var/www/Libertempo-web-1.10/vendor/raveren/kint/inc/kintParser.class.php(115): kintParser::_parse_object(Object(GuzzleHttp\Handler\EasyHandle), Object(kintVariableData)) #3 /var/www/Libertempo-web-1.10/vendor/raveren/kint/inc/kintParser.class.php(383): kintParser::factory(Object(GuzzleHttp\Handler\EasyHandle)) #4 /var/www/Libertempo-web-1.10/vendor/raveren/kint/inc/kintParser.class.php(115): kintParser::_parse_array(Array, Object(kintVariableData)) #5 /var/www/Libertempo-web-1.10/vendor/raveren/kint/inc/kintParser.class.php(383): kintParser::factory(Array) #6 /var/www/Libertempo-web-1.10/vendor/raveren/kint/inc/kintParser.cl in /var/www/Libertempo-web-1.10/vendor/guzzlehttp/guzzle/src/Handler/EasyHandle.php on line 90

merci bcp d'avance !

wouldsmina commented 6 years ago

Bonjour, Merci d'avoir commencé a débugger... un patch est prêt, la phase de test sera bientôt effectuée, en attendant tu peux toujours le tester toi même. A+

srvlib commented 6 years ago

merci, wouldsmina je te ferai un retour mais peut tu m’indiquer où ce trouve le patch ? merci

A+

wouldsmina commented 6 years ago

Oups! C'est #694

moguail commented 6 years ago

Bonjour, Idem pour nous à Lyon 2. Nous avons tenté une MAJ de la 1.10 > 1.11.1 et une installation "from scratch" de la 1.11.1 , nous n'arrivons passer le cap de l'authentification. Nous avons passé les requêtes indiquées dans le changelog de la 1.11.1 , sans succès. Nous avons modifié le password de l'admin pour satisfaire les conditions de Mysql 5.7.21 (php7) , sans succès. Si quelqu'un a une solution nous sommes preneurs.

wouldsmina commented 6 years ago

Bonjour @moguail

As tu suivi les nouveaux pré-requis? en particulier la configuration du vhost.

moguail commented 6 years ago

Bonjour, Merci, tout est OK. Nous avons vérifié que c'était bon avec le test api/hello_world...

wouldsmina commented 6 years ago

ok. par ldap ou CAS?

moguail commented 6 years ago

Déjà avec le compte admin , cela ne passe pas. Je n'arrive pas à activer le CAS avec cette version en plus. (tout fonctionne très bien en prod avec 1.10 auth & auth CAS)

wouldsmina commented 6 years ago

tu as bien le fichier /vendor/libertempo/api/configuration.json ? Si tu as 5 minutes, rejoint moi sur irc ce sera plus simple pour échanger...

moguail commented 6 years ago

Oui (pas d'IRC désolé) : { "name": "Libertempo/libertempo-api", "authors": [ { "name": "wouldsmina", "role": "Developer" }, { "name": "Prytoegrian", "email": "prytoegrian@protonmail.com", "homepage": "https://github.com/Prytoegrian", "role": "Developer" } ], "support": { "email": "libertempo@lists.tuxfamily.org", "irc": "irc://irc.tuxfamily.org/#Libertempo" }, "autoload": { "psr-4": { "LibertAPI\": "." } }, "license": "AGPL-3.0", "config": { "bin-dir": "Vendor/Bin", "vendor-dir": "Vendor" }, "require": { "raveren/kint": "^1.0", "slim/slim": "^3.5", "doctrine/dbal": "2.5" }, "require-dev": { "atoum/atoum": "3.0.0" } }

wouldsmina commented 6 years ago

raté! c'est composer.json ça :) (irc passe avec le webclient dans le lien ;) )

wouldsmina commented 6 years ago

Si tu n'as pas de fichier configuration.json, c'est certainement parce qu'il manquait les droits d'écriture pour www-data au moment de lancer la procédure de mise à jour. Tu peux le créer à la main en suivant l'exemple configuration.json.example

Tiens nous au courant... a+

ThierryLyon commented 6 years ago

Bonjour, quels sont les répertoires où www-data doit posséder des droits d’écritures svp ?

wouldsmina commented 6 years ago

Bonjour @ThierryLyon, Il faut les droits d'ecriture dans cfg/ et vendor/libertempo/api

ThierryLyon commented 6 years ago

Merci !

moguail commented 6 years ago

Merci mon collègue a pris la relève ! Je passe sous IRC car nous avons bien les bons droits sur cfg/ et vendor/libertempo/api et bien le fichier configuration.json (correctement configuré).

drwxr-sr-x 2 apache apache 4096 18 sept. 10:18 cfg drwxr-sr-x 2 apache apache 30 18 sept. 10:18 api drwxr-sr-x 12 apache apache 4096 18 sept. 10:19 libertempo-api

wouldsmina commented 6 years ago

Je suis pas disponible cette après-midi. On peut remettre ça à demain matin?

moguail commented 6 years ago

pas de soucis. Merci encore !

ThierryLyon commented 6 years ago

Sur le test du WS REST on a comme retour json :+1: { "code": 400, "status": "fail", "message": "Bad Request", "data": "Authorization mechanism is not set to « Basic »" }

ThierryLyon commented 6 years ago

capture

prytoegrian commented 6 years ago

Bonjour @ThierryLyon

sur RESTED, il te faut mettre ce header en particulier dans « Basic auth » en mettant le user et le mdp en clair, le logicel fait tout seul le bon header (en base64). Je n'ai pas le temps à cette heure de regarder ce qui diffère entre ta méthode et celle que je te propose, mais c'est comme ça que je procède et ça fonctionne.

Lâche pas le morceau, tu t'approches.

ThierryLyon commented 6 years ago

capture1

prytoegrian commented 6 years ago

Je n'arrive pas à voir ce que tu as de particulier pour déclencher cette erreur. Peux-tu prendre une copie d'écran des headers de la requête ? Sur Firefox c'est « F12 », panneau « Réseaux », clic sur la requête incriminée puis à droite « en-têtes ». Merci.

NB : je note sur ta copie d'écran que le mot de passe de l'admin n'est pas bon, mais le message d'erreur n'est pas lié.

ThierryLyon commented 6 years ago

Bonjour pryto On a trouvé avec notre admin

A priori c'est un pb connu sur apache qui enlève la partie autorisation sans le header pour d'obscures raisons de sécurité https://stackoverflow.com/questions/17018586/apache-2-4-php-fpm-and-authorization-headers https://www.reddit.com/r/PHP/comments/3raldh/til_that_apachefastcgi_strips_out_the/ https://docs.holodyn.com/KnowledgeBase/Hosting/Apache/PHP_FastCGI_Authentication_Headers Donc à présent ça passe et on a ça comme erreur

{ "code": 404, "status": "fail", "message": "Not Found", "data": "No user matches these criteria" }

ThierryLyon commented 6 years ago

On a essayé avec none comme mdp et le bon mdp modifié en BDD via la commande sql suivante

update conges_users SET u_passwd = PASSWORD("xxxxxxxxxxx") where u_login="admin";

prytoegrian commented 6 years ago

Hello,

pour que l'authentification passe, il faut que cette méthode retourne true : https://github.com/libertempo/api/blob/master/Utilisateur/UtilisateurEntite.php#L170L174

La fonction PASSWORD Mysql ne fonctionne pas chez nous, tu dois passer par md5() ou password_hash().

Allez, dernière ligne droite :-)

Par contre, qu'est ce que votre stack a de particulier pour que ce soit si compliqué à installer ?

ThierryLyon commented 6 years ago

C'est OK ça passe en MD5 !

Merci à tous :-)

prytoegrian commented 6 years ago

Cool !

D'après ce que je lis, tout le monde a eu sa réponse, je clos donc. Si je me trompe, rouvrez.