Создание аккаунтов Discourse через SSO без посещения URL форума?

Да, наш плагин для WordPress имеет опцию, которая делает что-то подобное. Принцип работы следующий: когда пользователь создаёт учётную запись в WordPress или входит на сайт WordPress, выполняется вызов маршрута Discourse /admin/users/sync_sso. Если пользователь ещё не существует в Discourse, это создаёт учётную запись в Discourse. Если пользователь уже существует в Discourse, этот вызов можно использовать для обновления данных о пользователе, которые изменились на стороне провайдера SSO. Например, можно обновить имя пользователя, его имя учётной записи или адрес электронной почты. Также можно добавить пользователя в группы Discourse или удалить из них.

Для общего обзора маршрута sync_sso ознакомьтесь с материалом по адресу: Sync DiscourseConnect user data with the sync_sso route. Если ваши разработчики хотят увидеть рабочий пример на PHP, посмотрите этот файл из нашего плагина для WordPress: wp-discourse/lib/sso-provider/discourse-sso.php at main · discourse/wp-discourse · GitHub. Основная функция, на которую стоит обратить внимание в этом файле, — это sync_sso.

Единственный минус, о котором мне известно, — это усложнение кода SSO. В реализации нашего плагина для WordPress это также добавляет вызов API к Discourse каждый раз, когда пользователь входит на сайт провайдера SSO. Это связано с тем, что функция привязана к событию входа в WordPress. Мне неизвестно о случаях, когда этот вызов API приводил бы к проблемам с лимитами запросов на каких-либо сайтах, но при необходимости можно сделать вызов только при создании новой учётной записи.

Плюс такого подхода заключается в том, что он позволяет обновлять данные о пользователях без необходимости их входа в Discourse через SSO. Например, это позволит добавлять пользователей в группы Discourse, когда они выполняют определённое действие на вашем сайте.

Другой способ интеграции сайта с Discourse через SSO — использование ссылок для входа через SSO на вашем сайте. Это позволяет размещать на вашем сайте ссылку на форум Discourse, которая будет входить пользователей в систему и перенаправлять их на конкретную страницу. В этой теме подробно описано, как это настроить: Создание ссылки для входа через SSO.