Я создаю портал сообщества, где буду использовать OAuth2 для связывания провайдера и Discourse. Я хочу разрешить вход по электронной почте только для тех адресов, которые были приглашены в сообщество (то есть кнопка регистрации должна отсутствовать), но при этом хочу разрешить все входы через OAuth2.
Мне не удаётся настроить это в параметрах OAuth2 / Вход. Возможно ли это? По сути, я хочу переопределить настройки регистрации для OAuth2.
Затем я снял галочку с пункта «Включить новую регистрацию»:
Я не могу прикрепить изображение (я новый пользователь), но там написано: «Регистрация новых аккаунтов в данный момент запрещена».
Не уверен, какие ещё есть варианты решения этой проблемы. Я перепробовал множество комбинаций (не могу перечислить их все здесь), но пока не нашёл рабочего варианта.
Кажется, мою мысль не уловили. У меня OAuth2-вход работает нормально, но я хочу оставить его включённым, одновременно отключив новую регистрацию. Настройки OAuth2 и регистрации по почте, похоже, связаны между собой, поэтому я не могу просто «включить» OAuth2, оставив регистрацию по почте отключённой.
Что должно происходить, если кто-то, кто не был приглашён, попытается войти?
О! Вы имеете в виду, что это то, что видит человек, если пытается перейти по ссылке приглашения?
Вы хотите разрешить вход только приглашённым. Вы хотите, чтобы эти люди были вынуждены входить через Clove. Верно? Судя по вашему примеру, именно это и произошло.
Я думаю, что настройка «только по приглашениям» в сочетании с отключением всех остальных типов входа, кроме Clove, решит вашу задачу. Пользователи без аккаунтов в Discourse увидят диалоговое окно «только по приглашениям», которое вы отображаете. Приглашённые пользователи смогут войти через OAuth-Clove.
Дополнительное пояснение может помочь лучше донести цель:
Я настраиваю полузакрытое сообщество, в котором есть три типа пользователей: сотрудники (вход по электронной почте), пользователи приложений (вход через SSO с использованием OAuth2) и специальные гости (вход по электронной почте, не являются пользователями приложения). Я хочу требовать приглашения для специальных гостей (позволяя им входить по электронной почте), но хочу считать пользователей OAuth2 «доверенными», и для них приглашение не требуется. Причина этого в том, что наличие учётной записи, необходимой для успешного выполнения OAuth2, означает, что пользователь доверен.
Я могу правильно настроить вход по электронной почте с приглашениями, но это нарушает работу входа через OAuth2, так как им тоже требуется приглашение. Я не хочу, чтобы они нуждались в приглашении или видели его — они уже доверены благодаря наличию учётной записи SSO.
Думаю, но не уверен, что параметр external auth skip create confirm — это то, что вам нужно. В описании упоминается только SSO, но я думаю, что теперь это работает и для OAuth. Я помогал кому-то настроить сайт, который пропускает диалог создания для конфигурации OAuth2, и, по-моему, именно это и было ключом.
Спасибо @pfaffman, похоже, я с этим смирился. На мой взгляд, для размещённого Discourse это невозможно, верно? Если нет, мне, возможно, придётся придумать что-то другое.