В качестве реального примера: я работаю над расширением аутентификации для MediaWiki, которое интегрирует DiscourseConnect. Это будет единственный способ входа в мой экземпляр MediaWiki.
Насколько я знаю, у меня есть два варианта:
-
Реализовать SessionProvider, который получает данные пользователя из обратного вызова DiscourseConnect и напрямую устанавливает их в сессию MediaWiki.
-
Реализовать PrimaryAuthenticationProvider, который также получает данные пользователя из обратного вызова DiscourseConnect, но создаёт собственного пользователя в системе MediaWiki.
Мне кажется, что вариант 1 больше похож на реализацию SSO, а вариант 2 — на «Вход через Google».
Единственный недостаток варианта 1, о котором я знаю, заключается в том, что из него будет сложно выйти: я не представляю, как можно будет мигрировать с него и включить локальный вход, если в MediaWiki не сохраняются никакие учётные данные. Возможно, я мог бы сохранять учётные данные пользователя где-то ещё.
Какой вариант мне выбрать?
Спасибо.