Итак, я администрирую форум, который использует SSO для передачи имени пользователя и пароля нашему экземпляру Discourse.
В настоящее время для этого нужно войти в мой основной веб-сайт, а затем перейти на мой форум, чтобы произошло прохождение учетных данных и создание учетной записи на форуме.
Мои разработчики работают над обновлением устаревшего метода вызова API и приведением его в соответствие с текущей спецификацией Discourse. Мой разработчик говорит мне, что SSO может создать учетную запись в Discourse, даже если пользователю не нужно явно переходить на наш форум.
У кого-нибудь из вас API настроен таким образом? Я опасается, что автоматическая синхронизация по умолчанию может быть рискованной. Каковы преимущества и недостатки?
Да, наш плагин для WordPress имеет опцию, которая делает что-то подобное. Принцип работы следующий: когда пользователь создаёт учётную запись в WordPress или входит на сайт WordPress, выполняется вызов маршрута Discourse /admin/users/sync_sso. Если пользователь ещё не существует в Discourse, это создаёт учётную запись в Discourse. Если пользователь уже существует в Discourse, этот вызов можно использовать для обновления данных о пользователе, которые изменились на стороне провайдера SSO. Например, можно обновить имя пользователя, его имя учётной записи или адрес электронной почты. Также можно добавить пользователя в группы Discourse или удалить из них.
Единственный минус, о котором мне известно, — это усложнение кода SSO. В реализации нашего плагина для WordPress это также добавляет вызов API к Discourse каждый раз, когда пользователь входит на сайт провайдера SSO. Это связано с тем, что функция привязана к событию входа в WordPress. Мне неизвестно о случаях, когда этот вызов API приводил бы к проблемам с лимитами запросов на каких-либо сайтах, но при необходимости можно сделать вызов только при создании новой учётной записи.
Плюс такого подхода заключается в том, что он позволяет обновлять данные о пользователях без необходимости их входа в Discourse через SSO. Например, это позволит добавлять пользователей в группы Discourse, когда они выполняют определённое действие на вашем сайте.
Другой способ интеграции сайта с Discourse через SSO — использование ссылок для входа через SSO на вашем сайте. Это позволяет размещать на вашем сайте ссылку на форум Discourse, которая будет входить пользователей в систему и перенаправлять их на конкретную страницу. В этой теме подробно описано, как это настроить: Создание ссылки для входа через SSO.