Single Sign-On Logout Strategy

1

Ho lavorato a un progetto che integra microservizi basati su cloud primaverile e applicazioni MVC con SSO. al momento, utilizzo SpringSession per il servizio di repository di sessione. Il mio componente di login delle applicazioni correnti contiene un server di autenticazione per creare una sessione nel back-end e un client di frontend che chiama un tale servizio di accesso, funziona perfettamente. Ma quando esco da altre applicazioni, la mia strategia attuale è quella di reindirizzare alla pagina di disconnessione di questo componente di accesso e quindi inviare una chiamata Ajax al servizio di backend per impostare la sessione archiviata nel repository di sessione per scadere. Questo approccio funziona solo se l'utente viene reindirizzato correttamente al componente di accesso per effettuare il logout.

Ho pensato di chiamare il servizio di disconnessione direttamente dalle altre applicazioni invece di reindirizzare tutte le richieste di logout al componente di accesso, ma il lato negativo sarebbe per tutte le altre mie applicazioni, ho bisogno di implementare il servizio di disconnessione.

Quali sarebbero le strategie generali da utilizzare per garantire che la sessione utente venga disconnessa in un ambiente SSO che potrebbe ridurre al minimo la creazione di un servizio di disconnessione duplicato per ciascuna applicazione?

    
posta Zhenyang Hua 24.10.2018 - 18:42
fonte

1 risposta

1

Se ricordo (e non sono esperto in SSO / federazione), in un ecosistema SSO il Provider di identità dovrebbe avere un elenco di "partecipanti alla sessione" (fornitori di servizi che partecipano alla sessione corrente).

Supponiamo che ci siano tre fornitori di servizi (A, B, c) SSO per un determinato utente. Quando l'utente si disconnette in A (inviando una richiesta di disconnessione all'IDP), l'IDP deve inviare una richiesta di disconnessione a B e C (gli altri fornitori di servizi attivi), ciascuno dei quali deve invalidare la sessione associata e restituire una risposta di disconnessione all'IDP.

Quando ciò è fatto, l'IDP dovrebbe inviare la risposta di logout ad A.

L'utilizzo di tale flusso potrebbe causare problemi in un ecosistema di autenticazione federato in cui non si controllano tutti i provider di servizi federati.

    
risposta data 25.10.2018 - 05:46
fonte

Leggi altre domande sui tag