J'essaie de comprendre l'authentification unique à l'aide de SAML. Je suis tombé sur le paramètre RelayState et suis très confus pourquoi il vient en premier dans l'authentification unique pour envoyer des URL encodées? Qu'est-ce que ça veut dire exactement?
Veuillez lire ce qui suit à partir de documentation de Google Developer :
Google génère une demande d'authentification SAML. La demande SAML est codée et intégrée dans l'URL du service d'authentification unique du partenaire. Le paramètre RelayState contenant l'URL codée de l'application Google que l'utilisateur tente d'atteindre est également intégré à l'URL SSO. Ce paramètre RelayState est censé être un identifiant opaque qui est renvoyé sans aucune modification ni inspection.
La signification originale de RelayState
est que le SP peut envoyer une valeur à l'IDP avec le AuthnRequest
, puis la récupérer. Le SP peut mettre la valeur qu'il veut dans le RelayState
et le PDI devrait simplement le rappeler dans la réponse.
Ce paramètre
RelayState
est censé être un identificateur opaque qui est renvoyé sans modification ni inspection.
Il existe également une autre utilisation standard de facto pour RelayState
lors de l’ouverture de session lancée par Idp. Dans ce cas, il n'y a pas de demande entrante du SP, il ne peut donc y avoir aucun état à relayer. Au lieu de cela, l'IDP utilise RelayState
pour signaler à SP l'URL vers laquelle le SP doit être redirigé) = après une connexion réussie, c'est-à-dire ne fait pas partie de la norme SAML2.
Il semble que Google utilise RelayState
pour l'URL cible, même lors de la connexion initiée par le fournisseur de services, ce qui est parfaitement correct. Cependant, comme le dit la documentation, le PDI devrait simplement le relayer.
RelayState est un identifiant de la ressource sur le SP vers lequel le PDI redirigera l'utilisateur (après la connexion réussie). C'est un moyen de rendre le processus de SSO plus transitoire pour l'utilisateur car sont redirigés vers la même page que celle demandée à l'origine par le SP.
Selon le document officiel SAML,
Certaines liaisons définissent un mécanisme "RelayState" pour conserver et transmettre des informations d'état. Lorsqu'un tel mécanisme est utilisé pour acheminer un message de requête en tant qu'étape initiale d'un protocole SAML, il impose des exigences en matière de sélection et d'utilisation de la liaison utilisée ultérieurement pour acheminer la réponse. À savoir, si un message de requête SAML est accompagné de données RelayState, alors le répondeur SAML DOIT renvoyer sa réponse de protocole SAML en utilisant une liaison qui prend également en charge un mécanisme RelayState, et il DOIT placer les données exactes RelayState reçues avec la demande dans le relais RelayState correspondant. paramètre dans la réponse.