2015-01-23 5 views
4

Я реализую SSO, где я являюсь поставщиком удостоверений, сейчас я могу успешно войти в сервисный центр. Но он ведет меня на домашнюю страницу. Я хочу указать URL целевой страницы, когда я отправлю ответ. Искали довольно много, но не смогли найти ничего убедительного. Не знаете, какой элемент ответа SAML несет URL-адрес целевой страницы или указан в форме, которую я должен указать. Использование java и opensaml-библиотек для генерации ответа.SSO - SAML, перенаправлять пользователя на указанную целевую страницу после успешного входа в систему

+0

Как вы это сделали, я застреваю в задаче, в которой вы преуспеваете, Как вы создали saml –

ответ

6

Хотя это не относится к спецификациям SAML, де-факто стандарт должен использовать элемент RelayState для этого. Он добавляется как параметр в ответе в дополнение к параметру SAMLResponse и значению URL-адреса landing. Пример HTML-страница из http://en.wikipedia.org/wiki/SAML_2.0 для IDP с помощью POST связывания для ответа:

<form method="post" action="https://sp.example.com/SAML2/SSO/POST" ...> 
    <input type="hidden" name="SAMLResponse" value="<response>" /> 
    <input type="hidden" name="RelayState" value="<url>" /> 
    ... 
    <input type="submit" value="Submit" /> 
</form> 

Edit:
Просто чтобы быть ясно, декларация RelayState параметра части спецификации, и он включен, чтобы обеспечить минуя произвольно состояние между SP и IDP. Использование его для передачи URL-адреса, определяющего целевую страницу, не специфицируется в спецификации, а является стандартным использованием де-факто. Любое использование RelayState в IDP-init-SSO будет зависеть от паритетного соглашения между IDP и SP, и это просто соглашение, которое имеет смысл, полезно и, таким образом, было широко принято.

+0

Безопасно ли передавать незашифрованный URL. Термин SP дает мне «не найденный», предполагайте, что они не декодируют его в конце. Но он работает без кодирования. – user3391212

+0

Извините, я хотел сказать, что на проводе он кодируется URL-адресом при передаче его в HTTP POST; размещая его дословно в форме HTML, браузер будет кодировать URL-адрес. Поэтому в примере, который я вам дал, вы поместили бы фактическое значение в ''. Я отредактирую текст. –

+0

gotcha! спасибо – user3391212