Terminaison de la session RP-PEP
Il existe plusieurs déclencheurs qui peuvent entraîner la fin de la session SSO d'un utilisateur sur le RP-PEP. Ceux-ci sont décrits ci-dessous. En principe, il n'y a pas de déconnexion partielle dans le domaine SSO (seulement sur une application). La déconnexion a toujours lieu globalement pour l'ensemble de la session SSO. Les scénarios décrits ci-dessous sont décrits pour des applications hébergées dans les réseaux de l'administration fédérale et donc protégées par un RP-PEP.Terminaison de session par déconnexion
En principe, la déconnexion de la session SSO est lancée sur l'RP-PEP. L'utilisateur appelle une URL dans l'une des applications utilisées dans la session, ce qui déclenche la déconnexion sur le RP-PEP. L'RP-PEP informe ensuite toutes les applications utilisées dans la session SSO sur le PEP, afin que celles-ci puissent à leur tour clore les sessions.URI de déconnexion sur le PEP.
L'application DOIT offrir à l'utilisateur la possibilité de mettre fin à sa session sur le PEP et donc également dans l'application. Le RP-PEP ne supporte pas le SAML 2.0 Single Logout.
En principe, tout URI de l'application qui se trouve dans une zone authentifiée sur le RP-PEP peut être utilisé comme URI de déconnexion. La déconnexion de la session est déclenchée par le paramètre de requête "logout" du RP-PEP, si celui-ci est envoyé dans une requête dans la zone authentique.
Idéalement, le lien de déconnexion dans l'application correspond à l'URI de la page d'entrée ou à une page de déconnexion dédiée de l'application, complétée par le paramètre de requête logout.
Correct
https://www.gate.amt.admin.ch/appl1/private/welcome.html?logout
- => L'URI de logout se trouve dans la zone authentique '/appl1/private/*'. domaine. L'URI de logout est placé sur la page d'entrée de l'application avec le paramètre de requête ?logout.
https://www.gate.amt.admin.ch/appl1/public/overview.html?logout
- => L'URI de logout se trouve ici dans la zone non authentique '/appl1/public/*'. Domaine .
https://www.gate.amt.admin.ch/appl1/private/logout.do?logout
- => L'URI de déconnexion est ici placé sur l'URI de déconnexion de l'application. Si un relogin est effectué sur cet URI après un logout, la session est immédiatement refermée sur l'application.
LogoutURI
Les sessions applicatives sont couplées à la session SSO, en ce sens que les cookies de session applicatifs ne sont pas transmis au navigateur web, mais sont retenus sur le PEP dans un cache de cookies du contexte de la session SSO. Un URI de déconnexion peut être configuré dans le RP-PEP pour chaque application. Si cet URI est défini, chaque application utilisée dans le cadre de cette session SSO est informée lorsque la session SSO est terminée. Pour ce faire, RP-PEP envoie une requête HTTP GET à l'URI défini, y compris les cookies de session applicatifs. Ainsi, les applications peuvent être informées par le PEP de la fin d'une session SSO afin de fermer proprement la session de l'utilisateur à leur tour.
12ème règle: Lors de la fin d'une session SSO (logout/timeout), les applications peuvent être informées par le PEP via l'URI de logout configuré.
Déroulement de la session Logout
L'ordonnancement de la session (Logout) sur le RP-PEP, contrôlé par l'utilisateur, se déroule comme indiqué ci-dessous. SAML 2.0 Single Logout (SLO) n'est pas supporté par eIAM. La situation initiale est une session SSO existante de l'utilisateur avec RP-PEP et une session établie entre RP-PEP et l'application A et l'application B.
-
- Terminaison de session par logout
- Le navigateur web envoie une requête pour l'application A à RP-PEP dans la session en cours.
- Le RP-PEP envoie une requête à l'application A dans la session en cours.
- L'application A envoie une réponse à l'RP-PEP.
- L'RP-PEP envoie une réponse au navigateur Web.
- Le navigateur Web envoie une requête pour l'application B au RP-PEP dans la session en cours.
- Le RP-PEP envoie une requête à l'application B dans la session en cours.
- L'application B envoie la réponse à l'RP-PEP.
- L'application RP-PEP envoie la réponse au navigateur Web.
- L'utilisateur utilise la fonction de déconnexion de l'application A et le navigateur Web envoie la requête sur l'URI de déconnexion.
- L'RP-PEP appelle l'URI de déconnexion de l'application A et transmet le cookie de session de l'application A.
- L'application A invalide la session de l'utilisateur.
- L'application A envoie la réponse de déconnexion à RP-PEP. --
- L'RP-PEP appelle l'URL de déconnexion de l'application B et transmet le cookie de session de l'application B.
- L'application B invalide la session de l'utilisateur.
- L'application B envoie la réponse de déconnexion à RP-PEP.
- L'RP-PEP invalide la session de l'utilisateur
- L'RP-PEP envoie au navigateur Web une page HTML confirmant que la déconnexion est terminée.
Terminaison de la session des applications par logout avec STS-PEPs
La séquence suivante explique le processus de fin de session pour les applications qui ne sont pas hébergées derrière un RP-PEP mais ailleurs (réseaux fédéral, Cloud). Comme ces applications n'utilisent pas l'RP-PEP comme porte d'entrée pour toutes les connexions entre le navigateur web et l'application, l'RP-PEP ne peut pas être le maître de toutes les sessions. Cependant, en tant que SAML FI du point de vue des applications, il est le seul à connaître tous les fournisseurs de services utilisés dans la session SSO et à pouvoir les informer de la fin d'une session.
La situation de départ est une session existante du navigateur de l'utilisateur avec le RP-PEP. Dans la session SSO, l'application A et l'application B ont été utilisées par l'utilisateur. Les deux applications ont ensuite envoyé chacune une SAML AuthnRequest au RP-PEP et ont reçu une SAML Response de ce dernier.
-
- Terminaison de la session par logout pour les applications en dehors des réseaux de l'administration fédérale
- L'utilisateur envoie une requête HTTP à l'URI de déconnexion de l'application A.
- L'application A crée une demande de déconnexion SAML signée à l'attention de l'RP-PEP. Elle intègre la SAML LogoutRequest dans un formulaire HTML auto-transmis et l'envoie comme réponse HTTP au navigateur web.
- Le navigateur Web envoie la demande de déconnexion par HTTP POST à l'URL de déconnexion unique du RP-PEP.
- L'RP-PEP en tant qu'FI vérifie la signature de la demande de déconnexion SAML et recherche la session SSO correspondante. Il établit une liste de tous les fournisseurs de services à informer de la déconnexion. L'RP-PEP crée une demande de déconnexion SAML signée à l'intention de l'application B.
- L'RP-PEP transmet la demande de déconnexion SAML au navigateur Web au moyen d'un formulaire HTML auto-transmis dans la réponse HTTP.
- Le navigateur Web envoie la demande de déconnexion par HTTP POST à l'URL SingleLogout Location de l'application B.
- L'application B vérifie la SAML LogoutRequest, identifie la session et génère une SAML LogoutResponse signée. La session de l'application B est terminée.
- La LogoutResponse est transmise au navigateur web au moyen d'un formulaire HTML auto-transmis dans la réponse HTTP.
- Le navigateur Web envoie la LogoutResponse à l'RP-PEP par HTTP POST.
- Le RP-PEP vérifie la LogoutResponse. Si d'autres applications ont été utilisées dans la session SSO, elles sont informées de la même manière de la fin de la session. Si l'application B était la dernière application à ne pas avoir déclenché le Single-Logout SAML, l'RP-PEP crée une SAML Logout Response signée à l'attention de l'application A.
- La LogoutResponse est intégrée dans un formulaire HTML auto-transmis et envoyée au navigateur de l'utilisateur dans la réponse HTTP.
- Le navigateur Web envoie la LogoutResponse à l'application A par HTTP POST.
- L'application A vérifie la LogoutResponse et met fin à la session de l'utilisateur.
- L'application A envoie au navigateur web de l'utilisateur dans la réponse HTTP la confirmation que le logout a été effectué et que la session SSO a été terminée.
Terminaison de la session par inactivité de la session
Une autre possibilité pour laquelle la session de l'utilisateur est invalidée et terminée sur le RP-PEP est une inactivité prolongée sur la session. La suppression des sessions inactives a lieu d'une part pour des raisons de sécurité et d'autre part pour libérer les ressources système non nécessaires.La terminisation de la session initiée par RP-PEP en raison d'une inactivité prolongée de la session est décrite dans la procédure suivante. Comme la déconnexion n'a pas été déclenchée par une request de l'utilisateur, aucune information ne peut être affichée à l'utilisateur sur la déconnexion qui a eu lieu. Si l'utilisateur envoie à nouveau une requête à RP-PEP après la fin de la session sur RP-PEP en raison d'une inactivité trop longue, une nouvelle session est lancée avec le navigateur web de l'utilisateur.
-
- Terminaison de session pour cause d'inactivité de la session
- Le navigateur Web envoie une requête HTTP pour l'application A à l'RP-PEP dans la session en cours.
- L'RP-PEP envoie la requête HTTP à l'application A dans la session en cours.
- L'application A envoie la réponse HTTP à l'RP-PEP.
- L'RP-PEP envoie la réponse au navigateur Web.
- Le navigateur Web envoie une requête HTTP pour l'application B au RP-PEP dans la session en cours.
- L'RP-PEP envoie la requête HTTP à l'application B dans la session en cours.
- L'application B envoie la réponse HTTP à l'RP-PEP.
- L'RP-PEP envoie la réponse HTTP au navigateur Web.
- Après l'expiration de l'intervalle d'inactivité défini sur le RP-PEP (durée pendant laquelle le PEP n'a plus reçu de requêtes sur cette session), le RP-PEP initie de lui-même la déconnexion de l'application A et envoie une requête HTTP sur l'URL de déconnexion de l'application, avec le cookie de session émis par l'application.
- L'application A invalide la session de l'utilisateur.
- L'application A envoie une réponse HTTP à l'RP-PEP. Cette réponse HTTP n'est pas transmise au navigateur Web, car le navigateur n'a pas émis de requête HTTP.
- L'RP-PEP envoie une requête HTTP à l'URL de déconnexion de l'application B avec le cookie de session que l'application B a émis.
- L'application B envoie une réponse HTTP à l'RP-PEP. Cette réponse HTTP n'est pas transmise au navigateur Web, car le navigateur n'a pas émis de requête HTTP.
- L'RP-PEP invalide la session de l'utilisateur qu'il gère. La fin de la session sur le PEP se produit indépendamment de la réaction des applications à l'appel de l'URL de déconnexion.
Terminaison de la session par l'atteinte de la durée maximale de la session
.Une autre possibilité pour laquelle la session de l'utilisateur sur le RP-PEP est invalidée et résiliée est que la durée de vie maximale autorisée de la session soit atteinte. Si celle-ci est atteinte, la session est automatiquement invalidée sur RP-PEP et toutes les applications utilisées pendant la session sont notifiées par RP-PEP de l'invalidation de la session. La session est alors invalidée même si une activité est encore en cours sur la session. La durée maximale de la session sur l'RP-PEP est limitée.
La terminaison de la session initiée par RP-PEP lorsque la durée maximale de la session est atteinte se déroule comme décrit ci-dessous. SAML 2.0 Single Logout (SLO) n'est pas pris en charge.
-
- Terminaison de la session Durée de vie maximale de la session
La situation de départ est une session qui existe déjà depuis longtemps entre le navigateur web de l'utilisateur et le RP-PEP. Pendant la session, les applications A et B sont utilisées.
- Le navigateur Web envoie une requête HTTP à RP-PEP pour l'application A.
- L'RP-PEP envoie la requête HTTP à l'application A après l'avoir vérifiée.
- L'application A traite la requête HTTP et envoie la réponse HTTP à l'RP-PEP.
- L'RP-PEP envoie la réponse HTTP au navigateur Web.
- Le navigateur Web envoie une requête HTTP à RP-PEP pour l'application B.
- L'RP-PEP envoie la requête HTTP à l'application B après l'avoir vérifiée.
- L'application B traite la requête HTTP et envoie la réponse à l'RP-PEP.
- L'RP-PEP envoie la réponse HTTP au navigateur Web.
- La session de l'utilisateur sur l'RP-PEP atteint sa durée de vie maximale.
- L'RP-PEP envoie une requête HTTP à l'URL de déconnexion de l'application A avec le cookie de session de l'application A.
- .
- L'application A invalide la session de l'utilisateur.
- L'application A envoie la réponse HTTP au PEP. Cette réponse HTTP n'est pas transmise au navigateur web de l'utilisateur.
- Le RP-PEP envoie une requête HTTP à l'URL de déconnexion de l'application B avec le cookie de session de l'application B.
- L'application B invalide la session de l'utilisateur.
- L'application B envoie la réponse HTTP à l'RP-PEP. Cette réponse n'est pas transmise par RP-PEP au navigateur de l'utilisateur.
- L'RP-PEP invalide la session de l'utilisateur.
- Le navigateur web de l'utilisateur envoie une nouvelle requête HTTP à RP-PEP avec le cookie de session RP-PEP désormais invalide.
- L'RP-PEP examine la requête HTTP et reconnaît qu'un nouveau contexte de sécurité doit être établi.
- RP-PEP redirige le navigateur web vers l'URL de connexion d'RP-PEP. Un nouveau cookie de session est alors créé dans le navigateur Web avec la réponse HTTP.
- Le navigateur Web envoie la requête HTTP vers l'URL de connexion RP-PEP.