Обратите внимание, что я подготовил обновлённый черновик PR с новым подходом (включая изменения, запрошенные@david в моей предыдущей попытке). Как указано в комментариях к PR, я планирую завершить его на этой неделе.
Это универсальная система, но первым поддерживаемым сценарием использования будут группы в Google Workspace. После внедрения системы добавление поддержки дополнительных провайдеров не составит большого труда.
Я только что объединил этот PR — огромное спасибо за всю вашу работу здесь, @angus! С нетерпением жду, как это будет использоваться и развиваться в будущем!
Пока я пометил настройку сайта как «Экспериментальная», чтобы у нас было время протестировать её и убедиться, что всё работает гладко. Как только мы будем уверены в результате и добавим поддержку ещё нескольких провайдеров аутентификации, я обязательно создам тему #feature:announcements для этой функции.
Я тоже с нетерпением жду, когда это станет доступно для входа через OAuth2/OpenID, не связанный с Google. Есть ли какие-либо новости о том, появится ли эта опция и когда?
В настоящее время я самостоятельно размещаю Discourse и использую Authentik в качестве провайдера идентификации для аутентификации. Моя цель — автоматически синхронизировать группы пользователей из Authentik с определёнными группами в Discourse при входе в систему.
Однако я хочу убедиться, что локальные пользователи, зарегистрировавшиеся через процесс локальной регистрации в Discourse, не получают эти специфические группы и вместо этого проходят обычный процесс повышения уровня доверия.
Мы перенесли нашу систему аутентификации с Atlassian Crowd (которая больше не поддерживается в Discourse) на OpenID Connect (через Keycloak) и хотели бы использовать код сопоставления групп Crowd, который мы внесли несколько лет назад в плагин discourse-openid-connect.
Надеемся, что это предложение будет рассмотрено для слияния. Мы также готовы дополнить документацию или написать тесты (если вы сможете направить меня к руководству по тестированию — я пока не являюсь опытным программистом на Ruby!).