Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Mauvaise redirection pour un nouvel utilisateur via SSO #391

Open
Chico0008 opened this issue Oct 1, 2024 · 15 comments
Open

Mauvaise redirection pour un nouvel utilisateur via SSO #391

Chico0008 opened this issue Oct 1, 2024 · 15 comments
Labels

Comments

@Chico0008
Copy link

Chico0008 commented Oct 1, 2024

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 Chico0008 added the bug label Oct 1, 2024
@Chico0008
Copy link
Author

Chico0008 commented Oct 1, 2024

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
Copy link
Author

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
Copy link
Collaborator

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 :

  • définir $page
  • corriger le code par le test : $page == "compte".
    Voilà, je suis désolé de ne pouvoir aider davantage.
    Cordialement,
    YN

@Chico0008
Copy link
Author

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
Copy link
Collaborator

Je propose :

  • ajouter $page comme variable globale ligne 1525 de functions.inc.php (dans la définition de la fonction VerifNomPrenomUser)
  • modifier la ligne 1529 en changeant le test par $page != "compte"

@Chico0008
Copy link
Author

Chico0008 commented Oct 1, 2024

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
Copy link
Collaborator

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
Copy link
Author

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
Copy link
Collaborator

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
Copy link
Author

reponse : NULL

@ynaessens
Copy link
Collaborator

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
Copy link
Author

Chico0008 commented Oct 1, 2024

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
Copy link
Collaborator

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
Copy link
Author

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
Copy link
Collaborator

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants