Как добавить returnUrl к запросу SAML?

#saml #service-provider

#saml #поставщик услуг

Вопрос:

Проблема: сайт SP xyz.com/A получает запрос на ресурс xyz.com/B требуется аутентификация. Запрос SAML с relay_state=xyz.com/B отправляется iDP. Пользователь перенаправляется на сайт iDP через SAML / SSO, а затем на idp.com .

Я хочу реализовать ссылку, которая позволяет пользователю отменить свой запрос на xyz.com/B и просто верните его обратно туда, где он просматривал xyz.com/A . Поскольку было перенаправление SAML, я не могу использовать заголовок referer в idp.com чтобы узнать, откуда пришел пользователь. В идеале я хочу отправить returnURL=xyz.com/A внутри моего запроса SAML.

Итак, вопрос в том, есть ли такой способ?

Спасибо

Ответ №1:

Я не знаю стандартного SAML-способа, которым вы могли бы достичь этого. Вероятно, вам придется полагаться на пользовательские расширения (например, дополнительные параметры строки запроса), чтобы сообщить IdP, куда перейти при отмене.

В качестве альтернативы (и не так элегантно, но практично) вы могли бы использовать JavaScript, чтобы отправить пользователя на пару шагов назад в истории? Например.:

 window.history.go(-2)
  

Ответ №2:

IDP может вернуть ответ SAML в SP. В ответе SAML вы можете использовать элемент Status, чтобы указать, что пользователь отменил процесс аутентификации. В качестве кода состояния верхнего уровня вы можете использовать urn:oasis:names:tc: SAML:2.0:Responder. Вы можете использовать свой собственный код состояния в качестве кода состояния второго уровня.