GRR 4.5.2 : Problème pour se connecter via connexion SSO CAS

  • hetnaz
  • Topic Author
  • New Member
  • New Member
More
4 days 3 hours ago - 4 days 3 hours ago #6153 by hetnaz
Bonjour
J'utilise actuellement GRR 4.4.2 et je tente de passer vers GRR 4.5.2

Après migration en recette vers GRR 4.5.2, je n'arrive plus à me connecter en SSO (via CAS).

Lorsque je clique la première fois sur le bouton "Connexion automatique" (index.php?force_authentification) de la page d'accueil, cela ouvre bien la partie SSO pour m'authentifier. Une fois authentifié coté SSO, cela me renvoie sur la page d'accueil de GRR (app.php?p=login&url=)

Si je reclique sur le bouton "Connexion automatique", cela n'ouvre plus la partie SSO mais me renvoie directement sur la page d'accueil de GRR. Cela ne va jamais plus loin.


En tentant de chercher dans le code, j'ai constaté que la fonction getUserName() appelée dans le fichier include/planning.php retournait une valeur vide. Elle est appelée dans cette condition : 

Ligne 43
Code:
// Vérification de l'authentification obligatoire if ((Settings::get("authentification_obli") == 1) && (getUserName() == '')) {           $url = rawurlencode($_GET['url']);           header("Location: app.php?p=login&url=".$url);           exit; }

Dans ma configuration j'ai bien "authentification_obli" = 1 mais la fonction getUserName() ne retourne aucun résultat.

Auriez-vous un correctif à proposer svp ?
Merci par avance

Cordialement
Last edit: 4 days 3 hours ago by hetnaz.

Please Log in or Create an account to join the conversation.

  • hetnaz
  • Topic Author
  • New Member
  • New Member
More
3 days 10 hours ago - 3 days 10 hours ago #6154 by hetnaz
Bonjour,
J'ai demandé de l'aide à Cursor (IA) pour voir s'il trouvait la cause.

Il m'a indiqué que cela venait du fichier include/session.inc.php 
  • La version 4.5.2 force SameSite=Strict sur le cookie de session dans include/session.inc.php :
Code:
$isSecure = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on') || (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https'); @session_set_cookie_params([      'lifetime' => Settings::get("sessionMaxLength")*60, // Durée de vie du cookie      'secure' => $isSecure, // Transmettre via HTTPS si disponible      'httponly' => true, // Inaccessible à JavaScript (protection XSS)      'samesite' => 'Strict' // Protection CSRF : envoyer le cookie uniquement pour les requêtes du même site ]);

 Résultat :
  • La requête index.php?force_authentification crée une session, mais le cookie n’est pas renvoyé après la redirection.
  • grr_resumeSession() échoue ensuite, $_SESSION est vide, et donc getUserName() est vide.
  • include/planning.php voit authentification_obli = 1 et getUserName() == '' et redirige vers app.php?p=login&url=... en boucle.

Ce qui est mon cas, mon serveur SSO n'a pas le même domaine que mon serveur qui héberge GRR.

En changeant "samesite" à "Lax", cela résout mon problème.



Pour que ce soit plus propre et que cela ne vérifie que pour le SSO, un correctif m'est proposé : 
Code:
$sameSite = 'Strict'; $sso_statut = Settings::get('sso_statut'); if (in_array($sso_statut, [     'cas_visiteur', 'cas_utilisateur',     'lemon_visiteur', 'lemon_utilisateur',     'lasso_visiteur', 'lasso_utilisateur',     'http_visiteur', 'http_utilisateur', ])) {     // Les flux SSO ont besoin que le cookie survive au retour cross-site     $sameSite = 'Lax'; } @session_set_cookie_params([     'lifetime' => Settings::get("sessionMaxLength")*60,     'secure'   => $isSecure,     'httponly' => true,     'samesite' => $sameSite, ]);
Last edit: 3 days 10 hours ago by hetnaz.

Please Log in or Create an account to join the conversation.

  • hetnaz
  • Topic Author
  • New Member
  • New Member
More
2 days 10 hours ago - 1 day 3 hours ago #6159 by hetnaz
Je viens de voir qu'une issue a été postée hier concernant le même problème et qu'un correctif existe
github.com/JeromeDevome/GRR/issues/530
 
Last edit: 1 day 3 hours ago by Yan.

Please Log in or Create an account to join the conversation.

Moderators: Yan