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

28

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

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

  

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

    
задан Oomph Fortuity 18.12.2015 в 08:07
источник

3 ответа

47

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

  

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

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

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

    
ответ дан Anders Abel 18.12.2015 в 09:54
  • Я рад, что «стандартное использование де-факто» было указано здесь. Я пытался понять, почему URL-адрес перенаправления был отправлен в RelayState. –  dey.shin 18.01.2018 в 21:11
6

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

    
ответ дан Yasser Afifi 18.12.2015 в 18:11
0

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

  

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

    
ответ дан Aravin 20.09.2017 в 09:29