JeromeDevome / GRR

GRR Officiel - Copyright Team DEVOME
https://grr.devome.com
GNU General Public License v2.0
84 stars 51 forks source link

Mauvaise redirection pour un nouvel utilisateur via SSO #391

Open Chico0008 opened 5 days ago

Chico0008 commented 5 days ago

Bonjour J'ai installer un GRR 4.3.6 et configurer ce dernier avec LDAP et SSO HTTP coté serveur j'ai aussi la conf Sso GSSAPI fonctionnel.

Cependant, quand un nouvel utilisateur, inconnu de la BDD arrive, il est redirigé vers la page http://grr.domaine.net/compte/compte/compte.php l'URL devrait etre http://grr.domaine.net/compte/compte.php

Problème uniquement si le SSO http est activé. si desactiver, pas de soucis, mais du coup pas d'authentification automatique :s

Coté admin (compte admin local) je le voit bien crée en base mais partiellement, il a juste son username, le reste des infos n'est pas recupérée.

Infos GRR Version de GRR : 4.3.6 - Release-v4.3.6 Version PHP : 8.3.12 Problème suite à une installation ou mise à jour : nouvelle installation

Chico0008 commented 5 days ago

Extrait des log apache erreur : [Tue Oct 01 11:01:36.985952 2024] [php:warn] [pid 80307] [client 10.0.1.57:53818] PHP Warning: Undefined array key "changepwd" in /var/www/grr.informatique/include/session.inc.php on line 671, referer: http://grr.informatique.viry.net/ [Tue Oct 01 11:01:36.998588 2024] [php:warn] [pid 80307] [client 10.0.1.57:53818] PHP Warning: Undefined array key "changepwd" in /var/www/grr.informatique/include/session.inc.php on line 749, referer: http://grr.informatique.viry.net/ [Tue Oct 01 11:01:37.025602 2024] [php:warn] [pid 80307] [client 10.0.1.57:53818] PHP Warning: Undefined variable $page in /var/www/grr.informatique/include/functions.inc.php on line 1529, referer: http://grr.informatique.viry.net/ [Tue Oct 01 11:01:37.047590 2024] [php:warn] [pid 80307] [client 10.0.1.57:53818] PHP Warning: Undefined variable $page in /var/www/grr.informatique/include/functions.inc.php on line 1529, referer: http://grr.informatique.viry.net/

Chico0008 commented 5 days ago

Si je n'active pas le SSO, les utilisateurs arrivent sur une page de login si ils s'authentifient avec leur compte AD, ca fonctionne directement et le user est integralement renseigné en base. mais avec SSO http pour rendre cela transparent, pour les nouveaux utilisateurs ca deconne, alors que les users connu, pas de soucis (mais normal car existent deja en base)

ynaessens commented 5 days ago

Bonjour, merci pour tous ces détails. Je pense que c'est la fonction VerifNomPrenomUser qui déclenche cette erreur. La variable $page n'est pas définie (pourquoi ? Je ne suis pas en mesure d'effectuer les tests de SSO) et il n'est pas raisonnable de ne pas exclure la page "moncompte", laquelle a été renommée "compte"... Il y a donc deux problèmes à régler :

Chico0008 commented 5 days ago

Si tu as des proposition de correction à tester, je peut le faire de mon coté ayant un SSO fonctionnel coté serveur web. soit tu me fournis le fichier complet, soit les corrections à faire en detail dans le fichier functions.inc.php

ynaessens commented 5 days ago

Je propose :

Chico0008 commented 5 days ago

Visiblement ca ne suffit pas code modifié : function VerifNomPrenomUser($type) { // ne pas prendre en compte la page my_account.php global $desactive_VerifNomPrenomUser; global $page; if (($type == "with_session") && ($desactive_VerifNomPrenomUser != 'y') && (IsAllowedToModifyProfil())) { $test = grr_sql_query1("SELECT login FROM ".TABLE_PREFIX."_utilisateurs WHERE (login = '".getUserName()."' AND (nom='' or prenom = ''))"); if (($test != -1) && ($page != 'compte')) { header("Location: ./compte/compte.php"); die(); } } }

mais apres test, je suis toujours dirigé sur une page /compte/compte/compte.php c'est niveau arbo que ca va pas, y'a un /compte en trop

sauf qu'en prime ce coup ci l'utilisateur n'est plus du tout créer en base (avant y'avait juste le username, sans nom ni prenom ni mail)

ynaessens commented 5 days ago

Cela ne va pas être beau, mais il faudrait voir quelle est la valeur de $page... en incluant après global $page; la ligne echo $page; die(); par exemple

Chico0008 commented 5 days ago

avec cet ajout apres le global $page; je suis rediriger sur week_all.php?area=1 mais la page est vide.

en base l'utilisateur est crée avec juste login, nom mais sans la casse provenant d'AD, et prenom/mail vide.

ynaessens commented 5 days ago

C'est bizarre ! Le script devrait s'arrêter et afficher la valeur de $page... à moins qu'elle ne soit vide et alors remplacer echo $page; par vardump($page);

Chico0008 commented 5 days ago

reponse : NULL

ynaessens commented 5 days ago

Bien, au moins c'est cohérent avec la page vide. Et donc $page n'est pas définie. En revenant au code initial, je propose de remplacer le test ($page != 'moncompte') par (!strstr($_SERVER['PHP_SELF'],'compte.php'))

Chico0008 commented 5 days ago

C'est la bonne :) desormais j'arrive bien sur le formulaire de finalisation de création de l'utilisateur, ou lui sont demandé Nom, Prenom, mail et personnalisation du profil.

Y'aurait pas possibilité d'automatiser ce process en recuperant d'office les infos en provenance du Ldap dans le cas du SSO justement ? surtout qu'on renseigne dans la conf SSO Http les champs a recuperer de l'AD.

ynaessens commented 5 days ago

Je ne trouve pas la page en version 4.3.6... En version 3.5.1, c'est dans la page de réglage de la connexion LDAP que les attributs sont associés de LDAP vers GRR.

Chico0008 commented 5 days ago

en fait t'a 2 parties T'a la partie LDAP, avec la configuration de la liaison au serveur + les champs sur lequels faire le liens et la partie SSO, ou tu choisis la methode (http, serveur ou autre) ou tu configure aussi les champs sur lequels faire le liens (idéalement les meme que pour Ldap) image

ynaessens commented 5 days ago

OK, j'ai dû faire un zoom arrière car à 100% je ne voyais pas apparaître le menu des connexions externes...