DiscourseSsoConsumer — это расширение для MediaWiki, позволяющее сайту MW аутентифицировать пользователей через API провайдера Discourse Connect (то есть пользователи вводят свои пароли в Discourse). Изначально выпущенное год назад, версия 2.0.0 была опубликована вчера. Я считаю, что пришло время выделить этому расширению отдельную тему здесь, чтобы его было легче найти (в отличие от оригинального одиночного поста в теме «Провайдер SSO»: Use Discourse as an identity provider (SSO, DiscourseConnect) - #104 by mdoggydog).
Установка осуществляется через composer. Инструкции по установке и настройке содержатся в README.
Для версии 2.0.0 минимально требуемая версия MediaWiki — 1.35 (она ещё не тестировалась на более новых версиях).
Расширение изначально разрабатывалось и тестировалось на MW 1.31; версии v1.1.0 и v1.2.0, вероятно, работают с MW 1.31, но они не тестировались на ней.
Похоже, что метод AuthManager::singleton() был устаревшим в версии 1.35 и удалён в версии 1.37.
Я думаю, что теперь это исправлено; пожалуйста, попробуйте текущую версию dev-main этого расширения. (Вы можете установить её через Composer, указав “dev-main” в качестве номера версии.) У меня это работает на версии 1.35, и если у вас это заработает на версии 1.37, я официально помечу это как выпуск с исправлением ошибки (например, 2.0.1).
Я установил приложение на свой Android-телефон, то есть PWA в режиме standalone. Когда я вхожу в систему в MediaWiki, происходит перенаправление, и открывается PWA Discourse, а затем внутри самого PWA открывается мой URL MediaWiki, хотя должно происходить перенаправление в соответствующий веб-браузер. Мне кажется, что Discourse некорректно определяет и не перенаправляет в соответствующий веб-браузер, который инициировал вход. Это не связано с расширением MediaWiki, а связано с тем, как Discourse обрабатывает перенаправления и внешние URL-адреса. Есть ли какая-то настройка, которую я могу изменить, чтобы вход в систему работал с прогрессивным веб-приложением Discourse?
Извините, у меня нет никакого опыта работы с Discourse PWA.
Я предполагаю, что здесь есть фундаментальная проблема во взаимодействии PWA и Discourse как провайдера SSO: всякий раз, когда потребитель SSO хочет повторно аутентифицировать пользователя, уже вошедшего в Discourse, он отправляет команду браузеру клиента на перенаправление на сервер Discourse, ожидая, что сервер Discourse проверит существующие куки пользователя и перенаправит обратно к потребителю… при этом все эти перенаправления должны происходить незаметно в браузере, и пользователь не увидит ничего, кроме финальной загрузки страницы.
Однако PWA зарегистрирована в Android как совершенно отдельное приложение, которое вызывается для определённых URL/доменов, верно? Когда PWA перенаправляет обратно в исходный браузер, как этот браузер узнает, что новая ссылка имеет какое-либо отношение к его первоначальному запросу? И как Android может определить, что PWA следует показывать пользователю только в том случае, если PWA действительно требует ввода от пользователя?