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 Likes

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 Likes

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 Like

This is now completed per:

https://github.com/discourse/discourse/commit/3d76ce14219a168bdf85769c5474420951c14253

8 Likes

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 Like

This is the way I found to get SSO users pre-added to a group based on a list of e-mail addresses:

  1. Send a private message, pasting the e-mail addresses into the recipients field (supported since August 2017) to create “staged” users. (Delete the private message within email_time_window_minutes if you don’t actually want to send anything to the users)
  2. Add the staged users to the group, either:
    • One-by-one, on each user’s admin page
    • Use “Bulk Add To Group” on the group page, and paste in the same e-mail address list

This is really helpful for importing mailing lists onto a forum when SSO is enabled.

(Sorry for the thread necromancy :woman_mage::skull: – seems like the question is still open 2 years later, I couldn’t find this advice anywhere else)

It would still be nice if the normal invite users feature worked with SSO, so this could be done in one step (and so moderators could do it, currently it seems like only admins can do step 2).

3 Likes

@RyanK / @tobiaseigen I am pretty sure this is good to close, invites now should be super compatible with SSO, we made tons of progress over the past 2 years and should be able to handle your use case natively.

2 Likes

Yes, I think we are good to close. It is indeed very possible to invite people vho then log in via SSO or whatever login method the site provides. Depending on how the invite is setup, the invited user can be added to groups and dropped in a specific topic as they log in. Pretty sweet! :ice_cream:

Most of the discussion here is actually about SSO support for adding and removing a user to groups which I am less familiar with and do not see much documentation about here on meta. Someone more familiar could write a FAQ about it to pull together what is known about it. It allows users to be added or removed from groups as they log in via SSO, which actually has nothing to do with the invite system.

This is a good example from @simon for how to do it using WordPress: Automatically Adding New Users (from WP integration) To A Group - #4 by simon

There are caveats, however, so maybe it’s not worth encouraging people to implement this method. The Discourse groups have to exist already for this to work, and it requires the user to log out and log back in again for any changes on the auth provider end to take effect.

2 Likes