2015-12-18 10 views
23

Próbuję zrozumieć SSO za pomocą SAML. Natknąłem się na parametr RelayState i jestem bardzo zdezorientowany, dlaczego w SSO przychodzi pierwszy, aby wysyłać zakodowane adresy URL? Co to dokładnie znaczy?Co to jest parametr RelayState używany w SSO (np. SAML)?

Proszę przeczytać poniższe od the Google Developer documentation:

Google generuje żądanie uwierzytelnienia SAML. Żądanie SAML jest zakodowane i osadzone w adresie URL usługi SSO partnera. Parametr RelayState zawierający zakodowany adres URL aplikacji Google, do której użytkownik próbuje dotrzeć, jest również osadzony w adresie URL jednokrotnego logowania. Ten parametr RelayState ma być nieprzezroczysty identyfikator, który jest przekazywany z powrotem bez żadnych modyfikacji lub inspekcji

Odpowiedz

38

Pierwotne znaczenie RelayState jest to, że SP może wysłać jakąś wartość do IDP wraz z AuthnRequest a następnie je odzyskać . SP może umieścić dowolną wartość w pliku RelayState, a IDP powinien po prostu powtórzyć to w odpowiedzi.

Ten parametr RelayState ma być nieprzezroczysta identyfikator, który jest przekazywany z powrotem bez żadnych modyfikacji lub inspekcji

Istnieje również inny, de facto standardem stosowanie dla RelayState podczas korzystania z IDP inicjowane zalogować. W takim przypadku nie ma przychodzącego żądania od SP, więc nie może być żadnego stanu, który ma zostać przekazany z powrotem. Zamiast tego, IDjest używany przez IDP do sygnalizowania SP , jaki adres URL powinien przekierować do po pomyślnym wpisaniu się. To jest nie będące częścią standardu SAML2.

Wygląda na to, że Google używa adresu RelayState dla docelowego adresu URL, nawet po wpisaniu znaku SP, co jest całkowicie poprawne. Ale IDP powinien, jak mówi dokumentacja, po prostu go przekazać.

+0

Cieszę się, że "faktyczne standardowe użycie" zostało tu wskazane. Starałem się zrozumieć, dlaczego przekierowanie został wysłany w "RelayState". –

5

RelayState to identyfikator zasobu w SP, do którego IDP przekieruje użytkownika (po pomyślnym zalogowaniu). Jest to sposób na uczynienie procesu logowania jednokrotnego bardziej przejściowym dla użytkownika, ponieważ jest on ponownie przekierowywany na tę samą stronę, na którą prosiła w SP.

0

Według oficjalnego dokumentu SAML

Niektóre powiązania określenia „RelayState” mechanizm zachowania i przekazywania informacji o stanie. Kiedy taki mechanizm jest wykorzystywany do przesyłania komunikatu żądania jako początkowy etap protokołu SAML, to wymaga on wyboru i użycia wiązania, które następnie było wykorzystywane do przekazywania odpowiedzi. Mianowicie, jeśli komunikatowi żądania SAML towarzyszą dane RelayState, wówczas respondent SAML odpowiadający MUSI zwrócić odpowiedź protokołu SAML, korzystając z powiązania, które obsługuje również mechanizm RelayState, i MUSI umieścić dokładne dane przekazane przez RelayState, które otrzymał wraz z żądaniem, do odpowiedni parametr RelayState w odpowiedzi.

Powiązane problemy