2015-12-18 42 views
23

Sto cercando di capire SSO utilizzando SAML. Mi sono imbattuto nel parametro RelayState e sono molto confuso esattamente perché viene prima in SSO per inviare URL codificati? cosa significa esattamente?Che cos'è esattamente il parametro RelayState utilizzato in SSO (Es. SAML)?

Si prega di leggere quanto segue da the Google Developer documentation:

Google genera una richiesta di autenticazione SAML. La richiesta SAML è codificata e incorporata nell'URL per il servizio SSO del partner. Anche il parametro RelayState contenente l'URL codificato dell'applicazione Google che l'utente sta tentando di raggiungere è incorporato nell'URL SSO. Questo parametro RelayState vuole essere un identificatore opaco che viene passato indietro senza alcuna modifica o ispezione

risposta

38

Il significato originale di RelayState è che la SP può inviare un valore al IDP insieme al AuthnRequest e poi tornare indietro . L'SP può inserire qualsiasi valore desiderato nello RelayState e l'IDP dovrebbe semplicemente riportarlo nella risposta.

Questo parametro RelayState vuole essere un identificatore opaco che viene passato indietro senza alcuna modifica o di ispezione

C'è anche un altro, de facto uso standard per RelayState quando si utilizza log IDP-avviato. In tal caso, non vi è alcuna richiesta in entrata dall'SP, quindi non può essere inoltrato alcuno stato. Invece, lo RelayState viene utilizzato dall'IDP per segnalare all'SP quale URL deve essere reindirizzato su dopo l'accesso riuscito. Questo è non incluso nello standard SAML2.

Sembra che Google stia usando RelayState per l'URL di destinazione anche su accesso avviato da SP, che è perfettamente soddisfacente. Ma l'IDP dovrebbe, come dice la documentazione, riportarlo indietro.

+0

Sono contento che l''uso standard de facto' sia stato indicato qui. Ho faticato a capire perché l'URL di reindirizzamento è stato inviato in 'RelayState'. –

5

RelayState è un identificatore per la risorsa nell'SP che l'IDP reindirizzerà l'utente a (dopo il login riuscito). È un modo per rendere il processo di SSO più transitorio all'utente in quanto viene reindirizzato nuovamente alla stessa pagina originariamente richiesta al SP.

0

Secondo documento ufficiale SAML,

Alcuni attacchi definire un meccanismo "RelayState" per la conservazione e la trasmissione di informazioni di stato. Quando viene utilizzato un tale meccanismo per trasmettere un messaggio di richiesta come passo iniziale di un protocollo SAML, lo pone requisiti sulla selezione e sull'utilizzo del legame successivamente utilizzato per trasmettere la risposta. Vale a dire, se un messaggio di richiesta SAML è accompagnato dai dati di RelayState, il risponditore SAML DEVE restituire la risposta del protocollo SAML utilizzando un'associazione che supporta anche un meccanismo RelayState e DEVE collocare esattamente i dati di RelayState ricevuti con la richiesta in il corrispondente parametro RelayState nella risposta.