Назад | Перейти на главную страницу

единый вход для нескольких SAML SP с одним IdP

Часть нашего сайта, скажем https://www.example.com/files, защищен модулем mod_auth_mellon, который предоставляет SP, который аутентифицируется с нашим IdP. Это прекрасно работает.

Остальная часть сайта - это Drupal с модулем samplesamlphp_auth. Этот модуль создает другой SP, который аутентифицируется с тем же IdP. Это тоже отлично работает.

Проблема в том, что эти два SP не используют общий логин. Вы должны входить в систему отдельно для каждого из них, даже если пользователь аутентифицируется с одним и тем же IdP. Очевидно, это нежелательно. Когда я вхожу в один, я хочу, чтобы другой обнаружил и использовал данные сеанса SAML для входа и меня.

Разве этого можно ожидать? Я думал, что два разных SP на одном хосте будут автоматически обмениваться информацией о сеансе, но теперь я думаю, что это не так. Каждый SP хранит информацию о сеансе в файлах cookie в пользовательском агенте. Файлы cookie имеют разные имена, но, что более важно, они относятся к сеансам из разных SP. Так что ими нельзя делиться.

Эта ветка есть некоторое обсуждение проблемы. Исходя из этого, я думаю, что необходимо, чтобы IdP распознал информацию о состоянии, сохраненную в пользовательском агенте, и не просил пользователя снова войти в систему. Это правильно? Как я могу сформулировать эту проблему для администраторов IdP?

Поскольку система единого входа обычно является частью настройки SAML, я бы посоветовал проверить IdP. Задача IdP - проверить, выполнил ли клиент уже вход в систему, и сообщить о том же сеансе другому SP.

Возможно, вам будет полезно узнать, с каким IdP и каким профилем SAML вы имеете дело, мой опыт ограничен профилем WebSSO и Shibboleth в качестве IdP и SP.

Хорошо, я постараюсь немного подробнее рассказать о профиле WebSSO:

  1. Пользователь посещает SP
  2. Пользователь перенаправляется на страницу инициатора SP (например, /Shibboleth.sso/Login)
  3. Пользователь использует службу обнаружения (DS) для выбора нужного IdP или был направлен на страницу инициатора входа с подходящим параметром
  4. Пользователь перенаправляется к IdP для аутентификации с помощью запроса аутентификации SAML.
  5. IdP использует файлы cookie, чтобы проверить, есть ли у пользователя сеанс при использовании потока имени пользователя / пароля.
  6. IdP перенаправляет пользователя обратно к SP с ответом SAML.
  7. SP проверяет ответ SAML и инициирует собственную обработку сеанса.

Найдите документы Shibboleth, посвященные этому Вот.