Déconnexion unique (SLO, Single Logout)
La déconnexion unique peut être utilisée pour déconnecter les utilisateurs de l’orchestrateur et des fournisseurs d’identité concernés. Un exemple de diagramme séquentiel du flux du déconnexion unique (SLO) est présenté ci-dessous.
Par défaut, l’orchestrateur effectue les opérations suivantes lors de la déconnexion :
- Suppression de tous les cookies associés à la requête
- Suppression de la session
- Déconnexion de l’utilisateur des fournisseurs d’identité associés à la session
Options de configuration
URL de déconnexion
logoutURL
correspond au terminal appelé par les clients pour déclencher une déconnexion. Ce terminal est hébergé
par l’orchestrateur et doit se trouver sur le même domaine.
connecteurs
utilisés en tant que fournisseur d’identité définissent les
champs requis pour la déconnexion.URL de redirection post-déconnexion
postLogoutRedirectURL
est un champ facultatif utilisé pour définir l’URL vers laquelle rediriger le
client à la fin du processus de déconnexion unique. Si le champ n’est pas spécifié, le client
recevra un message indiquant que la déconnexion a été effectuée avec succès.
Extension de services post-déconnexion
postLogoutSE
est un champ facultatif utilisé pour définir une extension de services qui détermine
le comportement qui suit la déconnexion. Cette extension de services est exécutée avant
la redirection vers postLogoutRedirectURL
.
Exemple de configurations
Configuration de base
singleLogout:
logoutURL: https://idp.enterprise.com/single-logout
postLogoutRedirectURL : https://enterprise.com/index.html
Extension de services postLogoutSE
Cette extension de services permet à l’utilisateur d’ajouter un comportement personnalisé dans le cadre de la
déconnexion unique. Elle est exécutée après la déconnexion des fournisseurs d’identité, mais avant
la redirection vers postLogoutRedirectURL
.
Si elle n’est pas définie, l’orchestrateur adoptera le comportement par défaut qui consiste à supprimer tous les cookies associés à cette requête.
Vous trouverez ci-dessous un exemple de suppression d’un cookie spécifique dans le cadre de la procédure de déconnexion unique.
singleLogout:
logoutURL: https://idp.enterprise.com/single-logout
postLogoutRedirectURL : https://enterprise.com/index.html
postLogoutSE:
funcName: PostLogout
file: /etc/maverics/extensions/postLogout.go
/etc/maverics/extensions/postLogout.go
package main
import (
"net/http"
"maverics/log"
)
func PostLogout(rw http.ResponseWriter, req *http.Request) {
log.Info("msg", "starting postLogoutSE")
for _, c := range req.Cookies() {
if c.Name == "storage" {
http.SetCookie(rw, &http.Cookie{
Name: c.Name,
Path: "/",
MaxAge: -1,
})
}
}
log.Info("msg", "successfully completed postLogoutSE")
}