Seeking Slack Login / SSO for Discourse

Is it possible to add Slack as a SSO option in Discourse? I saw an old thread about this (linked below), but it was either deleted or made private. Any suggestions appreciated. I know there is chat-integration, but I’d like to allow Slack users to login using their accounts as well. Thanks.

Slack offers SAML for SSO, but only to Plus or Enterprise plan customers:

Are you on one of those tiers?

An official SAML plugin already exists, here:

That article is about how to use Slack as an SSO client.
There is “sign in with Slack” which uses OAuth2: Sign in with Slack | Slack although I have never tried it.

4 Likes

My goal is to add Screen Shot 2020-04-22 at 2.56.25 PM

The sign in documentation looks perfect as an excellent new addition for our Discourse. I’ve enabled chat integration, which is also great. A bit over my head on how to add this button as a custom option with Discourse tests-pass. Once figured out, this social login will pair nicely with similar social logins such as Github and Patreon.

Following the documentation, I’ve created an app with Oauth access in Slack… now at this step for creating button.

Slack is displaying:

App ID
Client ID
Signing Secret
Client Secret
Verification Token
Oauth Access Token
redirect url added as https://example.domain.com/slack/auth

Options I see in Discourse are:

enable sso provider
sso url – URL of single sign on endpoint (must include http:// or https://)
sso secret – Secret string used to cryptographically authenticate SSO information, be sure it is 10 characters or longer

Attempting to set up with this documentation:

Slack supports
identity.avatar - View the user’s Slack avatar
identity.basic - View information about the user’s identity
identity.email - View the user’s email address
identity.team - View the user’s Slack workspace name

It would be nice to display Slack user avatar and possibly workspace name as well. Seems that accessing their email would be useful as well since that is critically important when using discourse.

Okay, it seems that enabling SSO in that guide will completely override all other login/registration settings.

I got SSO from Slack working using:
sso url = https://slack.com/oauth/v2/authorize?user_scope=identity.basic&client_id=EXAMPLE
sso secret = Client Secret

But I just want to add it as a button. Suggestions appreciated on how to implement this button into Discourse! :+1:
Screen Shot 2020-04-22 at 2.56.25 PM

I’m now looking into how to add the button via