Tâche #36196
Scénario #36370: Traitement express MEN fermés 31/12/2024
Test Eole SSO échoue lors du diagnose (mais SSO fonctionnel pour les authentifications)
100%
Description
Bonjour,
Un service a migré son serveur Eole de 2.7 à 2.8 avec succès, mais il a constaté un problème : dans le diagnose, le résultat du contrôle SSO est indiqué en "erreur", or, d'après les vérifications, il n'y a pas de différences dans la config du serveur entre 2.7 et 2.8 à première vue.
J'ai donc été comparer les scripts de checks SSO utilisés durant le diagnose pour comprendre, et j'ai pu voir une ligne de test différente entre ces 2 versions d'Eole :
En 2.7 :
if [ "$sso_actif" != 'non' ];then
TestService SSO $(CreoleGet eolesso_adresse):$(CreoleGet eolesso_port)
En 2.8 :
if [ "$sso_actif" != 'non' ];then
TestHTTPService SSO https://$(CreoleGet eolesso_adresse):$(CreoleGet eolesso_port)$(CreoleGet eolesso_cas_folder)
En clair voici les valeurs de ces variables :
eolesso_adresse = authentification.din.developpement-durable.gouv.fr
eolesso_port = 8443
eolesso_cas_folder = /cas
On peut remarquer qu'en 2.7, la variable "eolesso_cas_folder" n'est pas utilisée dans la commande de test SSO.
J'ai donc (après avoir sauvegardé le fichier original du check SSO du diagnose bien sûr) modifié de diverses façons la commande pour avoir un retour en OK.
J'ai tenté de retirer le préfixe "https://" devant les variables : toujours erreur
J'ai tenté de laisser le préfixe mais "http" (au lieu de https) pour voir : toujours erreur
J'ai tenté de supprimer le préfixe "https://" (comme c'était en 2.7) en conservant la variable "eolesso_cas_folder" en fin de ligne : toujours erreur.
Même chose qu'au dessus, mais en supprimant la variable "eolesso_cas_folder" : toujours erreur (pourtant j'ai exactement les mêmes variables qu'en 2.7...).
J'ai renommé la variable donné pour le test SSO "TestHTTPService SSO" par "TestService SSO" (là on est complètement avec la même chose qu'en 2.7, au caractère près) : check OK !
Du coup, j'ai conservé le nom "TestService SSO" dans la ligne du test mais en rajoutant la variable "eolesso_cas_folder" comme c'était le cas au début (sur 2.8) : check en erreur !
Ainsi erreur quel que soit ce que j'utilise, autre que ce qui était utilisé sous Eole 2.7...
Je pense qu'il y a ce "TestService SSO" récupéré quelque part ailleurs (je n'ai pas trouvé où, en tout cas pas dans ce script SSO du diagnose), nom qui doit rester le même, à moins de le mettre à jour ailleurs en amont (ou en aval) de ce script ?
Maintenant si on décompose la commande, en comparaison entre 2.7 et 2.8, voici ce que ca donne :
2.7 :
TestService SSO authentification.din.developpement-durable.gouv.fr:8443
2.8 (original, actuel) :
TestHTTPService SSO https://authentification.din.developpement-durable.gouv.fr:8443/cas
Le fichier de script est celui-ci :
/usr/share/eole/diagnose/151-sso
Du coup, quelle est la bonne commande pour confirmer que le SSO est OK selon vous en 2.8 ? Doit-il être la même qu'en 2.7 (par simplicité) ? Ou doit-il être en HTTPS quelque part et dans ce cas, étudier de votre côté pour apporter une correction à ce test en https ?
Merci beaucoup par avance pour votre investigation sur ce sujet.
Cordialement,
Mathieu
GSIL.
Demandes liées
Historique
#1 Mis à jour par Joël Cuissinat il y a plus d'un an
- Lié à Tâche #35266: Eole SSO 2.9.0 et utilisation du port 8443 ajouté
#2 Mis à jour par Joël Cuissinat il y a plus d'un an
- Tracker changé de Demande à Tâche
- Statut changé de Nouveau à En cours
- Assigné à mis à Joël Cuissinat
- Tâche parente mis à #34668
Bonjour Mathieu,
À partir d'EOLE 2.7.2, afin de limiter l'utilisation de ports non standards, une configuration alternative au port historique d'EoleSSO a été implémentée.
Elle est proposée par défaut sur les modules 2.8 est supérieurs.
L'utilisation du port https standard (443) nous a obligé à utiliser un alias car la racine est déjà utilisée par d'autres services et que l'utilisation d'un sous domaine aurait été beaucoup plus complexe à mettre en place.
La possibilité d'utiliser le port 8443 a été conservée pour les utilisateurs souhaitant conserver le fonctionnement antérieur. Dans cette configuration, l'alias doit être configuré à vide.
- eolesso_port=433 + eolesso_cas_folder='/cas'
- eolesso_port=8433 + eolesso_cas_folder=''
La vôtre n'est pas correcte.
Il faut éviter de modifier à la main la variable eolesso_cas_folder (Alias d'accès au service SSO) car, par défaut, elle est correctement calculée en fonction du port choisi :
root@scribe:~# CreoleSet --default eolesso_cas_folder root@scribe:~# CreoleSet eolesso_port 443 root@scribe:~# CreoleGet eolesso_cas_folder /sso root@scribe:~# CreoleSet eolesso_port 8443 root@scribe:~# CreoleGet eolesso_cas_folder root@scribe:~#
#3 Mis à jour par Mathieu DELEAU il y a plus d'un an
Bonjour Joël,
Merci beaucoup pour ce retour sur ce sujet.
Au temps pour moi, j'ai fait une erreur en indiquant que le port indiqué dans la config du serveur était fixé à 8443, en effet ca n'est pas le cas de tous les serveurs.
La modification que j'ai tenté d'expliquer a été effectuée sur un serveur Eole de test de mon côté, dont j'ai tenté de comprendre les différences du script SSO entre Eole 2.7 et 2.8, dû au résultat "erreur" systématique dans le diagnose pour les serveurs 2.8.
Donc je corrige ce que j'ai dit concernant mes serveurs de test (j'en ai un en 2.7 et un autre en 2.8) : la valeur du port, pour les 2, est : 443.
Donc, sous Eole 2.7, le script sso du diagnose donne 'semble-t-il systématiquement' cette ligne :
TestService SSO $(CreoleGet eolesso_adresse):$(CreoleGet eolesso_port)
(sans "eolesso_cas_folder")
Là où en 2.8 il y a 'semble-t-il systématiquement' cette ligne :
TestHTTPService SSO https://$(CreoleGet eolesso_adresse):$(CreoleGet eolesso_port)$(CreoleGet eolesso_cas_folder)
(avec "eolesso_cas_folder").
Quand je lance juste le script 151-sso du contrôle SSO, en 2.7, le résultat est OK sur mon serveur, avec donc ceci comme valeurs de variables :
eolesso_adresse = authentification.din.developpement-durable.gouv.fr
eolesso_port = 443
(pas de 'eolesso_cas_folder' dans la commande du check en 2.7, mais dans la config elle y est bien, avec '/cas' comme valeur).
Soit (en décomposé) :
TestService SSO authentification.din.developpement-durable.gouv.fr:443 | Résultat => OK.
Quand je lance juste le script 151-sso du contrôle SSO, en 2.8, le résultat est 'erreur' sur mon serveur, avec donc ceci comme valeurs de variables (par défaut) :
eolesso_adresse = authentification.din.developpement-durable.gouv.fr
eolesso_port = 443
eolesso_cas_folder = /cas
Soit (en décomposé) :
TestHTTPService SSO https://authentification.din.developpement-durable.gouv.fr:443/cas | Résultat => erreur.
Ca devrait pourtant fonctionner avec /cas à la fin si j'ai bien compris ceci ? Je cite :
eolesso_port=433 + eolesso_cas_folder='/cas'
eolesso_port=8433 + eolesso_cas_folder=''
Pourtant, sur Eole 2.7 avec mon serveur, j'ai une erreur si je change "TestService SSO" par "TestHTTPService SSO", par contre à l'inverse, en 2.8 si je mets exactement cette variable "TestService SSO" (à la place de "TestHTTPService SSO") suivi des 2 variables eolesso_adresse + eolesso_port, alors là j'ai un "ok" en retour.
On dirait que ce changement "TestService" par "TestHTTPService" provoque une erreur au départ ? En plus, peut-être, d'avoir cette variable "eolesso_cas_folder" systématiquement en bout de chaîne dans la commande, que le port soit 8443 ou 443.
Peut-être y a-t-il plusieurs choses à vérifier ?
En tout cas le check sso en 2.8 échoue systématiquement dans tous les cas, actuellement (sauf en prenant exactement la même ligne de commande qu'en 2.7).
Je vous laisse voir de votre côté s'il faut creuser plus loin ou pas, peut-être manque-t-il juste quelque chose dans la config du serveur pour que le contrôle SSO fonctionne correctement en https ?
Merci beaucoup par avance.
Cordialement,
Mathieu
GSIL.
#4 Mis à jour par Joël Cuissinat il y a plus d'un an
- TestService se contente juste de vérifier si le port tcp est ouvert
- TestHTTPService : utilise wget et utilise le proxy si il y en a un déclaré au niveau du serveur
En 2.7.2 le test diagnose n'est pas pertinent dans le cas "eolesso_port=433", c'est pour cela qu'il a été remplacé en 2.8.
Pour aller plus loin, vous pouvez :- exécuter le test en mode débogage comme ça on saura exactement ce qui est fait
bash -x /usr/share/eole/diagnose/151-sso
- démarrer le service à la main pour voir directement les éventuelles erreurs (NB : on peut aussi consulter : /var/log/rsyslog/local/eole-sso/eole-sso.info.log)
systemctl stop eole-sso.service /usr/bin/eole-sso -oy /usr/share/sso/authform.py --nodaemon
PS : nous devrions nous voir en visio la semaine prochaine, sinon, nous pouvons également discuter sur Tchap en privé et/ou sur le salon #EOLE ;)
#5 Mis à jour par Joël Cuissinat il y a environ un an
- Statut changé de En cours à Fermé
- % réalisé changé de 0 à 100
- Tâche parente changé de #34668 à #36370
- Restant à faire (heures) mis à 0.0