- Messages : 18
GRR 4.5.2 : Problème pour se connecter via connexion SSO CAS
- hetnaz
-
Auteur du sujet
- Nouveau membre
-
Moins
Plus d'informations
il y a 1 semaine 10 heures - il y a 1 semaine 10 heures #6153
par hetnaz
GRR 4.5.2 : Problème pour se connecter via connexion SSO CAS a été créé par 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
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
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
Dernière édition: il y a 1 semaine 10 heures par hetnaz.
Connexion ou Créer un compte pour participer à la conversation.
- hetnaz
-
Auteur du sujet
- Nouveau membre
-
Moins
Plus d'informations
- Messages : 18
il y a 6 jours 16 heures - il y a 6 jours 16 heures #6154
par hetnaz
Réponse de hetnaz sur le sujet GRR 4.5.2 : Problème pour se connecter via connexion SSO CAS
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
Résultat :
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é :
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,
]);
Dernière édition: il y a 6 jours 16 heures par hetnaz.
Connexion ou Créer un compte pour participer à la conversation.
- hetnaz
-
Auteur du sujet
- Nouveau membre
-
Moins
Plus d'informations
- Messages : 18
il y a 5 jours 16 heures - il y a 4 jours 9 heures #6159
par hetnaz
Réponse de hetnaz sur le sujet GRR 4.5.2 : Problème pour se connecter via connexion SSO CAS
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
github.com/JeromeDevome/GRR/issues/530
Dernière édition: il y a 4 jours 9 heures par Yan.
Connexion ou Créer un compte pour participer à la conversation.
Modérateurs: Yan