Подтвердить что ты не робот

Что такое параметр RelayState, используемый в SSO (пример SAML)?

Я пытаюсь понять SSO, используя SAML. Я столкнулся с параметром RelayState и очень смущен, почему он первым пришел в SSO для отправки закодированных URL-адресов? Что именно это означает?

Прочтите следующее из документацию разработчика Google:

Google генерирует запрос на аутентификацию SAML. Запрос SAML кодируется и внедряется в URL-адрес для службы SSO-партнера. Параметр RelayState, содержащий кодированный URL-адрес приложения Google, который пытается достичь пользователь, также встроен в URL-адрес единого входа. Этот параметр RelayState означает непрозрачный идентификатор, который передается без каких-либо изменений или проверки.

4b9b3361

Ответ 1

Первоначальное значение RelayState заключается в том, что SP может отправить некоторое значение IDP вместе с AuthnRequest, а затем вернуть его обратно. SP может поставить любое значение, которое он хочет в RelayState, и IDP должен просто откликнуться на него в ответ.

Этот параметр RelayState предназначен для непрозрачного идентификатора, который возвращается без каких-либо изменений или проверки

Существует также другое стандартное использование de facto для RelayState при использовании входа в систему, инициированного Idp. В этом случае нет входящего запроса от SP, поэтому не может быть передано состояние. Вместо этого, RelayState используется IDP, чтобы сигнализировать SP , какой URL-адрес SP должен перенаправить на после успешного входа в систему. Это не входит в стандарт SAML2.

Похоже, Google использует RelayState для целевого URL-адреса даже на инициированном SP-знаком, что совершенно нормально. Но IDP должен, как говорится в документации, просто передать его обратно.

Ответ 2

RelayState - это идентификатор ресурса в SP, который IDP перенаправит пользователя (после успешного входа в систему). Это способ сделать процесс SSO более преходящим для пользователя, потому что он перенаправляется снова на ту же страницу, изначально запрошенную в SP.

Ответ 3

Согласно официальному документу SAML,

Некоторые привязки определяют механизм RelayState для сохранения и передачи информации состояния. когда такой механизм используется для передачи сообщения запроса в качестве начального шага протокола SAML, он устанавливает требования к выбору и использованию привязки, впоследствии используемой для передачи ответа. А именно, если сообщение запроса SAML сопровождается данными RelayState, тогда ответчик SAML ДОЛЖЕН вернуть ответ SAML-протокола, используя привязку, которая также поддерживает механизм RelayState, и он ДОЛЖЕН поместить точные данные RelayState, полученные им с запросом, в соответствующее RelayState параметр в ответе.