Invitations should be compatible with SSO

@sam What do you think about this idea? Is it something that’s likely to be added?

We just started our community and are rolling out to a number of different audiences in stages. The first audience is general and doesn’t need to be added to any groups, but our next audience will be a specific group that should get special treatment.

Allowing groups to be specified via SSO is fine, my pref would be for 2 keys

groups: [group1,group2,group3]
remove_groups: [remove1]

That should allow you full fidelity here, should be fairly straightforward to add. We can slot it for 1.7

3 лайка

Glad to hear this is something you can support.

The only issue I see with having a remove_groups flag is that I will need to know what groups the user is no longer a member of to remove them. What about supporting three keys:

groups: [group1,group2,group3] # ensure user is only in groups1, group2, and group3

or

add_groups: [group4] # ensure user is in group4
remove_groups: [group2] # ensure user is not in group2

This way, my main app can handle all the logic and Discourse will simply be kept in sync.

4 лайка

I think the only way that works is the second one, because otherwise the membership of any group you create through the Discourse UI will have its members removed as they re-log.

The remove groups parameter would then be managed_group_list - user.groups (inventing the terminology of a “sso-managed group” for the sake of this post).

We can revisit that design if the managed groups list gets too big.

That’s the desired behavior for me. I don’t want people managing user groups in the discourse admin. I want our main app to have full control of group memberships.

1 лайк

This is now completed per:

8 лайков

Sorry to re-open this, but I’m trying to make sure I understand what was (or wasn’t) done to solve the use cases presented earlier.

I’m also on SSO. With a Discourse hosted site. We want to have a private forum where we can invite people select people, but unfortunately it’s not tied to a parameter we can identify and pass via SSO.

We want to upload a list of email addresses that, if/when a user signs in for the first time they are auto-added to the group. We are using the domain solution for some groups, but that wouldn’t apply in this case.

It looks like this was discussed, but it’s unclear to me which solution was ultimately chosen. I tested with an email address that was registered in our main userbase, but hadn’t logged into our discourse site to initiate the SSO. When we logged in with that ID the account created but he’s not in the group.

1 лайк

Вот способ, который я нашёл для предварительного добавления пользователей SSO в группу на основе списка адресов электронной почты:

  1. Отправьте личное сообщение, вставив адреса электронной почты в поле получателей (поддерживается с августа 2017 года), чтобы создать «подготовленных» пользователей. (Удалите личное сообщение в течение email_time_window_minutes, если вы на самом деле не хотите отправлять что-либо пользователям)
  2. Добавьте подготовленных пользователей в группу одним из следующих способов:
    • По одному на странице администратора каждого пользователя
    • Используйте функцию «Массовое добавление в группу» на странице группы и вставьте тот же список адресов электронной почты

Это очень полезно для импорта списков рассылки на форум, когда включён SSO.

(Извините за реанимацию темы :woman_mage::skull: — похоже, вопрос остаётся открытым и спустя 2 года, я не смог найти этот совет в другом месте)

По-прежнему было бы здорово, если бы обычная функция приглашения пользователей работала с SSO, чтобы это можно было сделать в один шаг (и чтобы это могли делать модераторы; на данный момент кажется, что только администраторы могут выполнить шаг 2).

3 лайка

@RyanK / @tobiaseigen Я почти уверен, что можно закрыть задачу: приглашения теперь должны быть полностью совместимы с SSO. За последние два года мы добились огромного прогресса и должны быть способны нативно обрабатывать ваш кейс.

2 лайка

Да, я думаю, мы можем закрыть тему. Действительно, вполне возможно пригласить людей, которые затем войдут в систему через SSO или любой другой метод аутентификации, предоставляемый сайтом. В зависимости от того, как настроено приглашение, приглашенный пользователь может быть добавлен в группы и помещен в конкретную тему при входе в систему. Очень круто! :ice_cream:

Большая часть обсуждения здесь касается поддержки SSO для добавления и удаления пользователей из групп, с чем я менее знаком и о чем здесь, на meta, почти нет документации. Кто-то более осведомленный мог бы написать FAQ, чтобы собрать всю известную информацию об этом. Это позволяет добавлять или удалять пользователей из групп при входе через SSO, что на самом деле не имеет ничего общего с системой приглашений.

Вот хороший пример от @simon о том, как это сделать с помощью WordPress: Automatically Adding New Users (from WP integration) To A Group - #4 by simon

Однако есть некоторые нюансы, поэтому, возможно, не стоит поощрять людей к реализации этого метода. Группы Discourse должны уже существовать для работы этой функции, и пользователю потребуется выйти из системы и войти снова, чтобы любые изменения на стороне провайдера аутентификации вступили в силу.

2 лайка