Как правильно передать RelayState URL-адресам ACS на стороне Okta, чтобы он попал в IdP в том виде, в котором он был введен?
Предоставляемые Okta URL-адреса ACS для поставщиков удостоверений не обрабатывают RelayState, инициированное SP, как я ожидал.
Я помещаю ?RelayState=hello
в URL-адрес ACS, и IdP получает SAMLRequest с RelayState равным %3FRelayState%3Dhello
, который декодируется в ?RelayState=hello
.
Если я поставлю вместо этого ?RelayState=
, то RelayState с SAMLRequest будет пустым, как я и ожидал.
Я прикрепил файл NetworkData.xml, полученный из Internet Explorer. В строке 447, столбце 53, вы можете увидеть, что RelayState, закодированный Okta, будет отправлен по почте на https://fs.research.verafin.local/adfs/ls включает в себя ?RelayState
.
Служба SSO IdP AD FS по адресу https://fs.research.verafin.local/adfs/ls декодирует и перекодирует RelayState, сохраняя неверное значение, которое ему было присвоено, и помещает его в форму для POSTED на https://verafin.oktapreview.com:443/sso/saml2/0oaa25fc86YRTkyb60h7 (URL-адрес Okta ACS).
Затем он перенаправляется на https://verafin.oktapreview.com/?RelayState=hello&fromLogin=true < / а> HTTP / 1.1
Это ошибка в реализации СКУД Okta?
Как мне получить URL-адреса ACS Okta для приема RelayState в запросах GET (SSO, инициированный SP с RelayState)?
Действия по воспроизведению
- Скопируйте URL-адрес ACS от поставщика удостоверений в Okta
- Вставьте его в браузер с
?RelayState=hello
после него - Посетите полученный URL
Как правильно передать RelayState URL-адресам ACS на стороне Okta, чтобы он попал в IdP в том виде, в котором он был введен?