Как я могу получить SimpleSAMLphp 1.17.2 для выхода пользователя из моего сайта? Работало в SSP 1.16.3 - PullRequest
0 голосов
/ 10 июля 2019

Я использую SimpleSAMLphp (SSP) для обработки аутентификации для моего сайта Yii (через удаленный IdP), и версия 1.16.3 работает нормально. Однако, когда я обновляю свой файл composer.json и извлекаю версию 1.17.2, локальный сеанс PHP на моем веб-сайте больше не разрушается, и пользователь остается в системе. Однако пользователь успешно вышел из IdP.)

Я немного прогуглил и рассмотрел обсуждения, которые выглядели актуальными:

  • Изменение в том, как генерируются идентификаторы сеанса, для соответствия конфигурации PHP
  • Документация о несоответствии между настройками сеанса PHP для приложения и SimpleSAMLphp (как возможный источник ошибок, связанных с сеансом).
  • Необходимость давать PHP и SimpleSAMLphp разные имена файлов cookie сеанса: https://github.com/simplesamlphp/simplesamlphp/issues/365#issuecomment-212351265

Я также рассмотрел некоторые обсуждения в списке рассылки SimplSAMLphp:

Кроме того, я отслеживал процесс выхода из системы, используя SSP 1.16.3 и 1.17.2, записывая каждый заголовок Cookie в запросах, заголовок Set-Cookie в ответах и ​​существующие файлы сеансов в несколько этапов, что показало некоторые различия ... но я не знаю, что сделать вывод из этой информации.

Когда я начинаю процесс выхода из системы на моем веб-сайте (который построен с использованием Yii 1.x) ...

  1. Я начинаю с того, что открываю чистый докер-контейнер моего сайта, открываю новое личное окно Firefox и открываю SAML Tracer. Я проверяю, что в данный момент на сервере нет файлов сеансов (т. Е. В новом контейнере Docker).
  2. Я иду через процесс входа в систему.
    • 1.16.3 и 1.17.2 ведут себя почти одинаково. В конце процесса входа в систему ...
      • Для обоих файлов мой сеансовый файл cookie сеанса PHP существует и составляет 7722 байта.
      • 1.16.3: Файл сеанса моего файла cookie сеанса SSP существует и составляет 2294 байта.
      • 1.17.2: Файл сеанса моего файла cookie сеанса SSP существует и составляет 2302 байта.
  3. Я захожу на /auth/logout/ на моем сайте, и браузер покорно отправляет мои текущие сессионные файлы cookie PHP (PHPSESSID) и SSP (SimpleSAML).
    • 1.16.3: заголовки Set-Cookie не возвращаются.
    • 1.17.2: заголовок Set-Cookie возвращается для cookie сеанса SSP, но значение такое же, как и раньше.
  4. Я перенаправлен вне офиса (на удаленный IdP) как часть процесса выхода из системы.
  5. Я вернулся на /simplesaml/module.php/saml/sp/saml2-logout.php/default-sp?SAMLRequest=… (и вместе с текущими файлами cookie сеансов PHP и SSP).
    • 1.16.3: заголовок Set-Cookie возвращается для cookie-файла сеанса SSP, но значение такое же, как и раньше.
    • 1.17.2: два разных заголовка Set-Cookie возвращаются для cookie сеанса SSP, ни один из которых не соответствует предыдущему значению.
  6. Я снова перенаправлен вне офиса, как еще один шаг в процессе выхода из SAML.
  7. Я вернулся в / (корень моего сайта) с моим (неизменным) cookie-файлом сеанса PHP и (самым последним) cookie-файлом сеанса SSP.
    • 1.16.3:
      • заголовок Set-Cookie возвращается для cookie-файла сеанса PHP, давая ему новое значение.
      • файл сеанса для предыдущего cookie-файла сеанса PHP был удален с сервера.
      • файл сеанса для нового файла cookie сеанса PHP пуст.
      • файл сеанса для самого последнего файла cookie сеанса SSP составляет 474 байта.
      • Я больше не захожу на свой сайт.
    • 1.17.2:
      • заголовки Set-Cookie не возвращаются для файлов cookie сеанса PHP или SSP.
      • файл сеанса для файла cookie сеанса PHP составляет 7722 байта.
      • файл сеанса для файла cookie сеанса SSP составляет 338 байт.
      • Я все еще вошел в систему на моем веб-сайте (но не на IdP).

Я могу (вроде) облегчить проблему, сказав Yii во время процесса выхода из системы, чтобы он возвратил пустое значение для файла cookie сеанса PHP (PHPSESSID) и установил его срок действия час назад, но так как он оставляет файл сеансаСам по себе этот подход кажется неудовлетворительным.

Учитывая эту информацию, есть ли у кого-нибудь какие-либо идеи или указания относительно того, куда я мог бы обратиться, чтобы попытаться определить, что может быть причиной этого?

В настоящее время я не знаю, является ли это результатом того, что я неправильно использовал Yii, неправильно использовал SSP или ошибка в SSP 1.17.2.


У меня естьпока не удалось отогнать это до минимального воспроизводимого примера, и я прошу прощения за это.Код с открытым исходным кодом, хотя я сомневаюсь, что кто-то захочет покопаться в нем:

...