Я просмотрел форум здесь и прочитал несколько тем, но я не думаю, что есть ответ на мой вопрос. Сказав это, я ни в коем случае не являюсь экспертом SAML, поэтому некоторые темы, которые я читал, я делал с блестящими глазами :).
Я унаследовал некоторый код, который использует OpenSAML (на стороне SP) для создания запроса и его отправки в реализацию ADFS. Проблема, которую я рассматриваю, заключается в том, что пользователь всегда возвращается к одному и тому же URL-адресу, независимо от первоначального запроса, скажем, на глубокую ссылку на сайт. Теперь, что касается ADFS, я знаю, что это перенаправление обратно в SP является статическим, что не поможет, но я на 99,9% уверен, что мы не передаем никаких значений перенаправления провайдеру. Из моего исследования я думаю, что мне следует использовать RelayState для передачи значения, чтобы оно возвращалось мне, чтобы я мог использовать его после обработки ответа SAML.
Моя проблема в том, что я не совсем понимаю, как передать RelayState. В коде, с которым я работаю, я вижу определенный класс -
public class HTTPRedirectTransportSender extends HTTPServletTransportSender
{
private static final transient Logger LOG = LoggerFactory.getLogger(HTTPRedirectTransportSender.class);
public HTTPRedirectTransportSender(HttpServletResponse httpServletResponse)
{
super(httpServletResponse);
}
@Override
protected BaseHttpServletResponseXMLMessageEncoder buildMessageEncoder()
{
return new HTTPRedirectDeflateEncoder();
}
}
.. и если я посмотрю на HttpRedirectDeflateDecoder, то увижу некоторую логику построения URL-адреса и тому подобного. Я искал некоторое время, но я не нашел примера, который, я уверен, будет тем, что я ищу, поэтому я надеялся, что эксперт сможет помочь?