Худший сценарий, о котором мне известно, требует выполнения следующих условий:
- адреса электронной почты не проверяются на внешнем сайте
- в полезной нагрузке SSO не установлен параметр
require_activation=true - на сайте Discourse существуют учётные записи, не связанные с записью
SingleSignOnRecord(владелец учётной записи никогда не входил в Discourse через SSO)
В таком случае кто-то может зарегистрироваться на внешнем сайте, используя адрес электронной почты пользователя Discourse, который никогда не входил в систему через SSO. Это позволит неподтверждённому аккаунту с внешнего сайта захватить учётную запись в Discourse, использующую тот же адрес электронной почты. Это особенно тревожно, если речь идёт об учётной записи администратора в Discourse.
На самом деле рекомендуется, чтобы Discourse обрабатывал проверку электронной почты, если внешний сайт этого не делает:
Тем не менее, есть несколько причин, по которым лучше обрабатывать проверку электронной почты на внешнем сайте:
- требование получать письмо с подтверждением от Discourse создаёт дополнительные трудности для пользователей при первой попытке входа в систему. (В реальности эти трудности всё равно должны возникнуть где-то — либо на стороне Discourse, либо на стороне внешнего сайта.)
- если в полезной нагрузке SSO установлен параметр
require_activation=true, Discourse не будет сопоставлять существующие учётные записи с внешними входами на основе адреса электронной почты. Это проблема, если вы активируете DiscourseConnect после того, как некоторые учётные записи уже были созданы в Discourse через регистрацию с именем пользователя и паролем. Это также проблема, если по какой-либо причине вам когда-либо потребуется удалить записиSingleSignOnRecordв Discourse. В этом случае Discourse не будет автоматически создавать новые записиSingleSignOnRecord, когда пользователи попытаются снова войти в систему.