Итак, мой следующий проект. У нас есть портал на заказ с собственной базой пользователей. Мы хотели использовать Wiki, поэтому я установил MediaWiki в отдельном поддомене. Наличие нескольких учетных записей - это 1990 год, поэтому интеграция была желанной. Это оказалось не так просто, как я надеялся. Поэтому мое решение было: единый вход.
IDP
Шаг 1, установил SimpleSAMLphp в качестве IDP на поддомене sso.myportal.nu Создал свой собственный модуль, который ищет пользователей в моей базе данных. Авторизация на портале администрирования SimpleSAMLphp, чтобы проверить / проверить, работает ли он, выглядит великолепно (скриншот прилагается).
SP
Шаг 2, установил SimpleSAMLphp как SP на поддомене wiki.myportal.nu Подключил SP к моему IDP. Вход на портал администрирования SimpleSAMLphp, чтобы проверить / проверить, работает ли он, выглядит великолепно. Я прохожу аутентификацию через IDP в моей пользовательской базе данных (скриншот прилагается).
MediaWiki
Затем установил два плагина в MediaWiki;
https://www.mediawiki.org/wiki/Extension:PluggableAuthhttps://www.mediawiki.org/wiki/Extension:SimpleSAMLphp
Это должно включить SSO.
При нажатии на ссылку входа в MediaWiki я перенаправляюсь на страницу входа в SimpleSAMLphp на sso.myportal.nu - пока все хорошо. Но вопреки моим ожиданиям .. Вход в систему не работает. Кажется, меня перенаправляют между sso.myportal.nu и wiki.myportal.nu
Я включил режим DEBUG, единственные предупреждения, которые я вижу, выглядят так:
Could not load state specified by InResponseTo: NOSTATE Processing response as unsolicited.
У меня есть файлы конфигурации и файлы журналов из обеих установок SimpleSAMLphp, прикрепленные ниже (слишком много текста для копирования / вставки здесь). файлы конфигурации и журнала После полутора дней просмотра Google я как бы застрял. Есть здесь какие-нибудь идеи?






Что ж, после двух очень долгих ночей, решение было найдено.
Прежде всего, если опция «Проверить настроенные источники аутентификации» на вкладке «Аутентификация» вашего SimpleSAMLphp работает ... Это не гарантия того, что она действительно будет работать.
В моем случае IDP и SP находились на одном сервере. Различные поддомены. Я отрегулировал все настройки в config.php, поэтому не было одинаковых настроек для IDP и SP (имена файлов cookie, пароли и т. д. И т. Д.).
Опция "Проверить настроенные источники аутентификации" на вкладке "Аутентификация" моего SimpleSAMLphp сработала! Но MediaWiki все еще не сделала этого.
Видимо, это тоже может быть вызвано несоответствием некоторых настроек в config.php по сравнению с php.ini
Я нашел ссылку на эту страницу в старом Форум Google, где упоминалось решение. Я не мог поверить, что это сработало, но был в отчаянии, поэтому попробовал.
механизм хранения должно быть чем-то другим, кроме значения по умолчанию. В моем случае я подключил SimpleSAMLphp к базе данных MySQL (может быть sqlite или что-то еще).
'store.type' => 'sql',
'store.sql.dsn' => 'mysql:host=localhost;dbname=simplesamlStuff',
'store.sql.username' => 'simplesamlUser',
'store.sql.password' => '1234567980',
'store.sql.prefix' => 'sso_',
И IDP, и SP могут использовать одну и ту же базу данных, если префикс отличается. Он создаст необходимые таблицы автоматически, ему просто нужно знать, где подключиться к какой базе данных и с какими учетными данными.
Причина, по которой я не удаляю свой вопрос, а отвечаю сам ... Я надеюсь, что кто-то найдет этот пост и сочтет его полезным. Не тратя на это столько времени, как я.
Рад слышать, что мои кошмары помогли кому-то. @CoryCoolguy
Спасибо Спасибо спасибо!!!!! Это было ЧРЕЗВЫЧАЙНО полезно, и я не думаю, что смог бы заставить что-либо из этого работать без вашего ответа! Простое переключение с phpsession на что-то еще полностью устранило это для меня. Я совершенно потрясен, что это сработало. Еще раз большое вам спасибо.