Включить синхронизацию групп из Google Workspace

Чтобы начать работу, настройте вход через Google согласно этим инструкциям:

Затем выполните следующие шаги:

  1. В панели управления Google для вашей интеграции OAuth перейдите в раздел «API и сервисы» и добавьте «Admin SDK»

  2. Перейдите в раздел «IAM и администрирование» → «Учетные записи служб» → «Создать учетную запись службы» и настройте её. Два дополнительных шага не обязательны — пропустите их.

  3. В списке учетных записей служб выберите созданную учетную запись, запишите её «уникальный идентификатор» для дальнейшего использования, затем перейдите на вкладку «Ключи». Создайте новый ключ в формате «JSON» и сохраните файл для дальнейшего использования.

  4. Перейдите на admin.google.com и откройте раздел «Безопасность». Откройте «Управление доступом приложений», затем «Управление доступом сторонних приложений». Нажмите «Добавить приложение», «Имя OAuth-приложения или идентификатор клиента». Введите идентификатор клиента вашего OAuth-приложения, затем выберите его из списка. Выполните все шаги, убедившись, что приложение помечено как «Доверенное». После этого оно должно появиться в списке:

  5. Вернитесь в раздел «Управление доступом приложений», прокрутите вниз и выберите «Управление делегированием в домене». Нажмите «Добавить новый» и введите идентификатор клиента учетной записи службы, которую вы создали ранее. В разделе «Области действия» вставьте значение:

    https://www.googleapis.com/auth/admin.directory.group.readonly
    
  6. В панели администратора Discourse перейдите в раздел Администрирование > Настройки > Вход и аутентификация > Аутентификаторы и найдите «google oauth2 hd». Настройте следующие параметры:

    google oauth2 hd: доменное имя вашего Google Workspace

    google_oauth2_hd_groups_service_account_json: вставьте содержимое файла ключа учетной записи службы, который вы создали ранее

    google_oauth2_hd_groups_service_account_admin_email: введите адрес электронной почты любой учетной записи администратора Google Workspace. Эта учетная запись будет использоваться службой при получении информации о группах Google

    google oauth2 hd groups: включено

При следующем входе пользователя Discourse автоматически загрузит и сохранит информацию о группах Google.

Чтобы связать группу Google с группой Discourse, откройте настройки группы в Discourse и перейдите в раздел УправлениеУчастники. В разделе «Автоматически» появится новый выпадающий список, позволяющий связать любое количество групп Google с группой Discourse:

Изменения в этом параметре вступают в силу немедленно. Изменения членства в группах Google вступят в силу при следующем входе пользователя.

Большое спасибо @angus за его работу над этой функцией. Мы надеемся в ближайшем будущем расширить эту систему синхронизации групп на другие методы входа.

8 лайков

Я бы очень хотел использовать это с «generic oauth2» (в частности, для Auth0). Есть ли другая ветка обсуждения или issue на GitHub, за которыми я могу следить по этой теме?

3 лайка

@david или @angus, не могли бы вы предоставить больше деталей по пункту 6.

Блок-цитата google oauth2 hd: доменное имя вашего Google Workspace

  1. Вы имеете в виду мой домен (ebsp.org), на котором есть аккаунт Workspace, или фактический домен самого Workspace?
  2. Это просто URL?

Блок-цитата google_oauth2_hd_groups_service_account_json: вставьте содержимое файла ключа сервисного аккаунта, который вы сгенерировали ранее

Скопировать и вставить всё содержимое из JSON?

@angus @david Я следовал этим инструкциям в точности так, как они изложены. У меня есть поле для поиска группы, но группы не отображаются. Есть какие-то идеи?

Привет, Чарли, параметр google oauth2 hd относится к API Google OIDC (документация здесь). Согласно их описанию, это:

Домен, связанный с Google Workspace или облачной организацией пользователя

Для примера: если бы я настраивал это внутри компании для наших сотрудников, я бы установил значение discourse.org.

Да!

Группы Google появятся в Discourse только после того, как член этой группы войдёт в систему через Google. У нас нет механизма для их отображения заранее.

1 лайк

@david Я наконец-то добился успеха. Мне пришлось отключить несколько вещей. На моём сайте пользователи автоматически входили через Google OAuth. Я отключил это и Discourse Connect, и всё заработало. Не уверен, что именно вызывало сбой. Как только я физически вошёл через Google, всё заполнилось.

1 лайк

По-прежнему ли чтение Google Groups является экспериментальной функцией? Изменились ли эти инструкции?

1 лайк

Как и @John_Faig, я задаюсь вопросом, всё ли ещё это экспериментальная функция.

Я только что узнал об этой возможности и планирую перенести три группы Google Groups. Убедить людей «измениться» крайне сложно. Нам нужны веские причины, чтобы выйти из зоны комфорта. При этом нам не нужны препятствия в процессе. Создание учётной записи (Discourse) на ещё одном сайте — это дополнительная нагрузка для тех, кто уже привык к GG. Если эта функция стабильна, потенциальное препятствие устраняется, и мы сможем сосредоточиться на предоставлении убедительных причин для аудитории, чтобы она перешла на новую платформу.

Спасибо!