Modifier le fichier

Gestion du SSO interne de K-Sup

La fonctionnalité de gestion du SSO permet d'authentifier automatiquement un utilisateur sur différents sites K-Sup avec des domaines différents.

Description de la fonctionnalité

La fonctionnalité de SSO s'active dans le back-office, dans la gestion des sites.
Il suffit de cocher la case "Site SSO" dans l'onglet "informations générales".

Case à cocher SSO

Le processus est le suivant :

  • L'utilisateur s'authentifie sur le site courant.
    • À la fin de l'autentification, un fichier XML avec les informations de la session est créé dans le dossier "session" du storage.
    • Un rebond est effectué sur une URL d'enregistrement de la connexion (connectionRegistry)
    • Une fois la connexion enregistrée, l'utilisateur est envoyé vers la page initialement demandée.
  • L'utilisateur navigue sur un site d'un autre domaine (site K-Sup)
    • Si le site est SSO et que l'utilisateur n'est pas authentifié sur le site courant, un check est effectué sur le site principal
    • Comme la connexion de l'utilisateur a été enregistrée dans le registre, le check va retrouver la connexion précédente et générer un jeton signé à usage unique pour l'autoconnexion.
    • Une popin s'ouvre en bas de la page et propose à l'utilisateur d'être connecté automatiquement sur le site courant.
  • Si l'utilisateur accepte, l'utilisateur est connecté via le jeton d'authentification.
    • Un rebond est ensuite effectué sur le site principal pour enregistrer la connexion sur le nouveau site.
    • L'utilisateur est ensuite redirigé vers la page qu'il consultait initialement.

Les fichiers session sont de la forme session_950c4fff-a3c6-4ffa-92db-6c5a4a4338da.xml avec le contenu suivant

<?xml version="1.0" encoding="utf-8"?>
<SESSION>
    <ID>950c4fff-a3c6-4ffa-92db-6c5a4a4338da</ID>
    <CODE>john.doe</CODE>
    <CODE_LDAP/>
    <CIVILITE>0000</CIVILITE>
    <NOM>Doe</NOM>
    <PRENOM>John</PRENOM>
    <EMAIL>john.doe@kosmos.fr</EMAIL>
    <STRUCTURE/>
    <PROFIL/>
    <GROUPES/>
</SESSION>

Les fichiers jeton JWT sont de la forme 0oT7FMGxuf sans contenu La session TOMCAT sera initialisée par les données présentes dans le fichier XML (alimentation réalisée dans le filter ContexteFilter). L'utilisateur sera alors reconnu comme authentifié et identifié.

@startuml
autonumber
skinparam style strictuml

Actor "Bob" as B
Participant Navigateur as N
Participant "K-Sup" as K

activate B
B -> N: Se connecte sur site A
activate N
N -> K: Appele l'URL de login
activate K
K -> N: Génère la page de login
deactivate K
N -> B: Affiche la page
deactivate N
B -> N: Saisit son identifiant et le mot de passe
activate N
N -> K: Soumet le formulaire d'identification
activate K
K -> K: Authentifie l'utilisateur
K -> K: Détermine la page d'atterissage
K -> N: Retourne un formulaire auto-submit sur le site principal
deactivate K
N -> K: Soumet le formulaire
activate K
K -> K: Enregistre La connexion \nde l'utilisateur sur le site A \ndans une connectionRegistry
K -> N: Retourne une redirection vers la page d'atterrisage
deactivate K
N -> K: Demande la page d'atterrissage
activate K
K -> N: Retourne la page demandée
deactivate K
N -> B: Affiche la page
deactivate N
...L'utilisateur navigue sur le site...
B -> N: Clique sur un lien vers le site B
activate N
N -> K: Appelle l'URL demandée
activate K
K -> N: Génère la page demandée <font color="red"><b>"Anonyme"</b></font>
deactivate K
N -> B: Affiche la page
N -> K: Interroge la connectionRegistry sur le site principal
activate K
K -> N: Retourne une jeton d'auto-connexion 
deactivate K
N -> B: Affiche la popin d'auto-connexion
B -> N: Clique sur le lien d'auto-connexion
N -> K: Soumet le formulaire d'auto-connexion
activate K
K -> K: Valide le jeton 
K -> K: Authentifie l'utilisateur sur le site B
K -> N: Retourne un formulaire auto-submit sur le site principal
deactivate K
N -> K: Soumet le formulaire
activate K
K -> K: Enregistre La connexion \nde l'utilisateur sur le site B\ndans une connectionRegistry
K -> N: Retourne une redirection vers la page initiale
deactivate K
N -> K: Demande la page initiale
activate K
K -> K: Génère la page\ncontextualisée <font color="green"><b>à bob</b></font>
K -> N: 200: retoune la page générée <font color="green"><b>pour bob</b></font>
deactivate K
N -> B: Affiche la page
deactivate N
@enduml

Service "RegistryCleaner"

Les connexions sont enregistrées par défaut pendant 8 heures à partir de la dernière connexion.
Une tache récurrente a pour fonction de purger les connexions expirées. Cette tâche démarre par défaut au bout de 60 seconde et s'exécute par défaut toutes les 60 secondes.
La session SSO est supprimée uniquement si elle ne contient plus de session HTTP.

Les propiétés suivantes permettent de personnaliser le fonctionnement de la purge:

  • connection.registry-cleaner.delay : fixe le délais avant le lancement de la première purge.
  • connection.registry-cleaner.period : fixe la période entre deux purges
  • connection.registry.expiration : fixe la durée de vie (TTL) de la session SSO

Cette purge n'impacte que la fonctionnalité de SSO. : un utilisateur connecté au BO ne sera pas déconnecté tant que sa session est vivante.