Включить синхронизацию групп из 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 лайков

I’d love to use this with “generic oauth2” (for auth0 specifically). Is there another thread or a GitHub issue I can follow for this?

3 лайка

@david or @angus Can you please provide more details for item 6.

Blockquote google oauth2 hd: the domain name of your Google Workspace

  1. Do you mean my domain (ebsp.org) that has a workspace account? Or actual domain of the workspace.
  2. Is it just the URL?

Blockquote google_oauth2_hd_groups_service_account_json : paste the contents of the service account key file you generated earlier

Copy and paste the entire contents from the JSON?

@angus @david I have followed these directions the way they are laid out. I have thee box to search for a group, but no groups populate. Any thoughts?

Hi Charlie, the google oauth2 hd is from Google OIDC API (docs here). They say it is:

The domain associated with the Google Workspace or Cloud organization of the user

To give an example, if I was setting this up internally for our staff, I would set the value to discourse.org.

Yup!

Google groups will only appear in Discourse once a member of that group signs in to Discourse using google. We don’t have any system for listing them up-front.

1 лайк

@david I finally got it to work. I had to turn some things off. The way my site was set up, users were auto-logged in through Google Oauth. I turned that off and Discourse Connect and it worked. Unsure as to which was creating a disconnect. Once I physically logged in with Google, everything populated.

1 лайк

Is reading Google Groups still experimental? Have these instructions changed?

1 лайк

Like @John_Faig, I’m wondering if this is still experimental.

I just saw this feature and have three Google Groups that I’d like to migrate. Getting people to “change” is extremely difficult. We need good reasons to shift out of our comfort zone. Then we don’t want stumbling blocks in the process. Creating a (Discourse) login in yet another website is a hassle for people who are already vested in GG. If this feature is stable, the potential stumbling block is removed, and we can focus on providing compelling reasons for the audience to migrate.

Thanks!