Мы находимся в ситуации, когда мы настраиваем приложение для использования Okta для единого входа. Приложение совместимо с SAML 2.0, но оно отправляет динамический AssertionConsumerServiceURL (параметр в URL-адресе может принимать 1 из 2 возможных значений). Приложение ожидает, что этот параметр вернётся, чтобы отправить пользователя на соответствующую страницу после успешной аутентификации.
В данный момент аутентификация проходит успешно, но пользователь не отправляется на правильную страницу. Мы подозреваем, что Okta не перенаправляет пользователя обратно к ACSURL, который был отправлен в исходном запросе SAML. Мы решили эту проблему с другими IdP, такими как simpleSamlPHP, указав массив из двух записей для ACSl в конфигурации метаданных. Формат будет следующим:
$metadata['php-saml'] = array(
'AssertionConsumerService' => array(
'https://{server}/index.phpmodule=Users&action=Authenticate&dataOnly=1&platform=base',
'https://{server}/index.phpmodule=Users&action=Authenticate&dataOnly=1&platform=mobile',
),
'NameIDFormat' => 'urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress',
'simplesaml.nameidattribute' => 'mail',
'simplesaml.attributes' => false,
'entityid' => 'php-saml',
);
Однако внешний интерфейс Okta, похоже, не имеет интерфейса для настройки этого. Есть ли какой-нибудь способ, которым Okta вообще можно настроить для приема входящего динамического ACSUrl и для направления пользователя обратно к нему после успешной аутентификации?
в AuthnRequest
Вы можете установить AssertionConsumerServiceURL
Атрибут и IDP должны перенаправить обратно на этот URL-адрес ACS. Не уверен, как это можно сделать с помощью конфигурации simpleSAML, но с lightsaml lib вы можете создать AuthnRequest как вам угодно.
Других решений пока нет …