SSO + Ldap -> Echec de connexion à GRR. Cause inconnue.

  • seb
  • Auteur du sujet
  • Nouveau membre
  • Nouveau membre
Plus d'informations
il y a 6 ans 4 mois #1028 par seb
Bonjour,

Je viens vers vous suite à une migration GRR qu'on n'arrive pas à finaliser.

Tout s'est bien passé jusqu'à la connexion via SSO et LDAP, qui renvoie l'erreur suivante : Echec de connexion à GRR. Cause inconnue.

Par ailleurs, dans les logs d'apache, il y a l'erreur php suivante :

[Wed Jul 04 17:24:26.647892 2018] [:error] [pid 27687] [client xx.xx.xx.xx.:54650] PHP Notice: Undefined variable: user_dn in /var/www/grr/include/session.inc.php on line 477

Le serveur est une debian stretch, avec php7 et apache2.

Merci pour votre aide !

Seb

Connexion ou Créer un compte pour participer à la conversation.

  • Yan
  • Developpeur GRR
  • Developpeur GRR
Plus d'informations
il y a 6 ans 4 mois #1029 par Yan
Bonjour,
quand vous évoquez une migration, la connexion SSO + LDAP était-elle active auparavant ?
Cordialement,
YN

Connexion ou Créer un compte pour participer à la conversation.

  • seb
  • Auteur du sujet
  • Nouveau membre
  • Nouveau membre
Plus d'informations
il y a 6 ans 4 mois - il y a 6 ans 4 mois #1034 par seb
Bonjour,
Merci pour votre réponse rapide.
Oui, la connexion LDAP SSO était active auparavant. Je tiens à préciser que nous sommes passés d'une version 1.9.7 à une version 3.4.0.

Finalement, nous avons réussi à résoudre notre pb.
Il s'agissait de la "Restriction des connexions via l'iP" qui bizarrement était renseigné "NON" alors qu'il attendait une valeur numérique, voire vide dans notre cas puisque nous ne faisons pas de filtrage IP (peut être un problème lié à la migration ??)

A côté de ça, nous avons repéré un autre bug :
Lorsque nous faisons une connexion SSO et que l'utilisateur est déjà existant, il semblerait que GRR n'arrive pas à récupérer le nom/prénom de l'utilisateur et écrase ceux déjà enregistrés avec un message d'erreur. Lorsqu'il s'agit d'un nouvel utilisateur, il n'y a aucun problème, l'utilisateur est bien ajouté avec sa description complète.

Apache renvoie l'erreur suivante :
PHP Notice: Undefined variable: user_dn in /var/www/grr/include/session.inc.php on line 477, referer: https://......./grr/week_all.php?area=5&id_site=1

Nous avons donc contourné le problème en commentant la ligne qui fait la requête en cas d'utilisateur existant (ligne ~486):

/*if (grr_sql_command($sql2) < 0)
fatal_error(0, get_vocab("msg_login_created_error") . grr_sql_error());*/

J'ajouterais à ça, que nous avons un peu galéré lors de la migration à cause de problèmes d'accents et caractères spéciaux mal gérés. Certains étaient en ASCII, d'autres en HTML....

Voici une petite commande qui nous a permis de corriger l'essentiel. A appliquer directement sur le dump avant copie dans la nouvelle base.

cat dump.sql | awk '{gsub(/&nbsp;/," ");gsub(/&#39;/," ");gsub(/&agrave;/,"à");gsub(/&egrave;/,"è");gsub(/&eacute;/,"é");gsub(/%E9/,"é");gsub(/%E8/,"è");gsub(/%E0/,"à");gsub(/%EF/,"ï");gsub(/%3F/,"?");gsub(/%22/," ");gsub(/%2B/,"+");gsub(/%2F/," ");gsub(/%26/,"&");gsub(/%27/," ");gsub(/%20/," ");gsub(/%2C/," ");gsub(/%25/," ")}1' > dump_clean.sql
Dernière édition: il y a 6 ans 4 mois par seb.

Connexion ou Créer un compte pour participer à la conversation.

  • Yan
  • Developpeur GRR
  • Developpeur GRR
Plus d'informations
il y a 6 ans 4 mois #1035 par Yan
Bonjour,
merci pour votre réponse.
Il y a effectivement des correctifs à faire et j'aurai besoin de votre aide pour faire des tests puisque je ne suis pas en configuration SSO+LDAP.
Cordialement,
YN

Connexion ou Créer un compte pour participer à la conversation.

  • seb
  • Auteur du sujet
  • Nouveau membre
  • Nouveau membre
Plus d'informations
il y a 6 ans 4 mois #1036 par seb
N'hésitez pas à me contacter si besoin pour des tests via l'adresse email de mon compte.

Cordialement,
S.

Connexion ou Créer un compte pour participer à la conversation.

  • Yan
  • Developpeur GRR
  • Developpeur GRR
Plus d'informations
il y a 6 ans 4 mois #1038 par Yan
Bonjour,

seb écrit: Finalement, nous avons réussi à résoudre notre pb.
Il s'agissait de la "Restriction des connexions via l'iP" qui bizarrement était renseigné "NON" alors qu'il attendait une valeur numérique, voire vide dans notre cas puisque nous ne faisons pas de filtrage IP (peut être un problème lié à la migration ??)

Effectivement, je viens de refaire le test : en installation fraiche, pas d'erreur, le champ IP est bien vide, par contre, lors d'une restauration, il faut prendre garde à effacer le 'no' du champ IP.
La modification de la fonction de filtrage est à la source de ce problème.
J'étudie la suite de vos remarques.
Cordialement,
YN

Connexion ou Créer un compte pour participer à la conversation.

  • Yan
  • Developpeur GRR
  • Developpeur GRR
Plus d'informations
il y a 6 ans 4 mois #1039 par Yan
Deuxième point :

seb écrit: A côté de ça, nous avons repéré un autre bug :
Lorsque nous faisons une connexion SSO et que l'utilisateur est déjà existant, il semblerait que GRR n'arrive pas à récupérer le nom/prénom de l'utilisateur et écrase ceux déjà enregistrés avec un message d'erreur. Lorsqu'il s'agit d'un nouvel utilisateur, il n'y a aucun problème, l'utilisateur est bien ajouté avec sa description complète.

Apache renvoie l'erreur suivante :
PHP Notice: Undefined variable: user_dn in /var/www/grr/include/session.inc.php on line 477, referer: https://......./grr/week_all.php?area=5&id_site=1

Nous avons donc contourné le problème en commentant la ligne qui fait la requête en cas d'utilisateur existant (ligne ~486):

/*if (grr_sql_command($sql2) < 0)
fatal_error(0, get_vocab("msg_login_created_error") . grr_sql_error());*/

Si j'ai bien compris, vos utilisateurs sont en connexion SSO avec interrogation d'un annuaire LDAP. La variable user_dn devrait être définie en ligne 207 lors de l'interrogation de l'annuaire.
Pour essayer d'y voir plus clair, pouvez-vous insérer un affichage du résultat lu, vers la ligne 215 de session.inc.php :
Code:
// Recuperer les donnees de l'utilisateur $info = @ldap_get_entries($ds, $result); if (is_array($info)) { print_r($info);
et partager vos résultats ?
Cordialement,
YN

Connexion ou Créer un compte pour participer à la conversation.

Modérateurs: Yan