# O Discourse poderia oferecer um serviço de login SSO/Federado semelhante ao StackExchange?

**URL:** https://meta.discourse.org/t/could-discourse-offer-a-stackexchange-like-sso-federated-login-service/160914
**Category:** Feature
**Created:** [Agosto 14, 2020, 6:49pm UTC](https://meta.discourse.org/t/could-discourse-offer-a-stackexchange-like-sso-federated-login-service/160914 "2020-08-14T18:49:23Z")
**Posts on this page:** 7
**Page:** 1

<div class="post-metadata">

### Author: ![alexweissman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/alexweissman/32/75300_2.png) [@alexweissman](https://meta.discourse.org/u/alexweissman)
#### Post date: [Agosto 14, 2020, 6:49pm UTC](https://meta.discourse.org/t/could-discourse-offer-a-stackexchange-like-sso-federated-login-service/160914/1 "2020-08-14T18:49:23Z")

</div>

Tenho visto o Discourse por toda parte e não poderia estar mais feliz! Parece que ele está se tornando rapidamente a escolha padrão para comunidades que desejam configurar novos fóruns de discussão com rapidez ou substituir fóruns existentes baseados em plataformas antigas e padrões de UX desatualizados.

No entanto, de certa forma, ele parece ser vítima de seu próprio sucesso: toda vez que quero postar em uma nova comunidade do Discourse, preciso criar uma conta, configurar uma senha, etc. Algumas comunidades se deram ao trabalho de configurar o OAuth via GitHub, redes sociais, etc., mas muitas não. Tenho que criar e verificar uma nova conta no servidor Discourse delas apenas para fazer uma pergunta, oferecer uma resposta ou até mesmo ❤ uma resposta que achei útil.

Compare isso com minha experiência na rede StackExchange, onde me é oferecido um botão “Junte-se a esta comunidade” em uma comunidade com a qual desejo interagir pela primeira vez. Quando clico nesse botão, recebo a opção de me cadastrar usando meu login de outra comunidade:

 ![Screen Shot 2020-08-14 at 1.12.40 PM](https://global.discourse-cdn.com/meta/original/3X/1/b/1b3efae7f828c8d5decb6c255546db5b36dcc204.png)

A nova conta é criada e logada automaticamente com um único clique.

Acho que meu problema é que há uma suposição não declarada de que cada comunidade do Discourse é uma ilha à parte e que os usuários ficam sentados o dia todo logados em um único fórum esperando para ver respostas e novas perguntas, se divertindo ganhando distintivos e acumulando privilégios. Na realidade, a grande maioria das interações dos usuários é impulsionada por necessidades, com apenas alguns poucos usuários ancorando as comunidades para participar regularmente. Acredito que a interação típica de um usuário com uma comunidade do Discourse é algo assim:

1. Ter um problema
2. Pesquisar no Google por uma resposta
3. Não encontrar uma solução em lugar nenhum na internet, incluindo o fórum Discourse do grupo
4. Decidir que meu problema é urgente o suficiente para criar uma conta no fórum
5. Fazer minha pergunta ou comentar em uma pergunta existente
6. Receber uma resposta de alguém ou, eventualmente, resolver por conta própria
7. Se eu resolvi por conta própria e estou me sentindo pró-social, retornar ao fórum Discourse com minha solução
8. Voltar a viver minha vida
9. Anos depois, ter outro problema e tentar lembrar minhas credenciais para poder fazer login no fórum novamente
10. Repetir os passos 5 a 10

Grande parte desse processo é dificultada pela necessidade de criar uma nova conta para cada novo fórum no qual quero participar.

Entendo que as comunidades da StackExchange são gerenciadas por uma empresa central, enquanto as comunidades do Discourse são hospedadas de maneira completamente descentralizada, mas parece que isso poderia ser implementado com o Discourse estabelecendo seu próprio serviço de provedor de identidade. Em contraste com a integração de algo como GitHub ou Facebook, onde o administrador do fórum precisa tomar medidas ativas em um site externo para configurar o OAuth com esses provedores, parece que os tokens necessários para um botão “Entrar com Discourse” poderiam ser configurados automaticamente por meio do processo de instalação padrão.

Sei que já houve [outras conversas](https://meta.discourse.org/t/federation-support-for-discourse/90921) sobre esse assunto, mas elas parecem ter escopo excessivamente complicado e saíram do rumo.

---

<div class="post-metadata">

### Author: ![sunjam](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/sunjam/32/175682_2.png) [@sunjam](https://meta.discourse.org/u/sunjam)
#### Post date: [Agosto 14, 2020, 7:48pm UTC](https://meta.discourse.org/t/could-discourse-offer-a-stackexchange-like-sso-federated-login-service/160914/2 "2020-08-14T19:48:33Z")

</div>

> [@alexweissman](#):
>
> Sei que já houve [outras conversas](https://meta.discourse.org/t/federation-support-for-discourse/90921) sobre esse problema, mas elas parecem ter um escopo excessivamente complicado e se desviaram do rumo.

Isso é um tipo diferente de federação, conectando o Discourse a ferramentas como o Mastodon relacionadas a publicações e respostas (em oposição ao login).

Você deve verificar o [Discourse SSO](https://meta.discourse.org/t/13045?silent=true), que está sendo discutido em vários tópicos no meta.

> [@Setup DiscourseConnect - Official Single-Sign-On for Discourse (sso)](https://meta.discourse.org/t/official-single-sign-on-for-discourse-sso/13045):
>
> [DiscourseConnect](https://meta.discourse.org/t/13045?silent=true) is a core Discourse feature that allows you to configure “Single Sign-On (SSO)” to completely outsource all user registration and login from Discourse to another site. Offered to our [pro, business and enterprise hosting customers](https://discourse.org/pricing). information_source (Feb 2021) ‘[Discourse SSO](https://meta.discourse.org/t/13045?silent=true)’ is now ‘[DiscourseConnect](https://meta.discourse.org/t/13045?silent=true)’. If you are running an old version of Discourse, the settings below will be named sso\_... rather than discourse\_connect\_... The Problem Many sites wishing to integrate wit…

> [@Use Discourse as an identity provider (SSO, DiscourseConnect)](https://meta.discourse.org/t/using-discourse-as-a-sso-provider/32974):
>
> So you want to use Discourse as an identity provider for your own web app? Great! Let’s get started. Enable [DiscourseConnect](https://meta.discourse.org/t/13045?silent=true) provider setting Under Discourse admin site settings (/admin/site\_settings) enable setting enable discourse connect provider and add a secret string to discourse connect provider secrets (used to hash SSO payloads). Implement [DiscourseConnect](https://meta.discourse.org/t/13045?silent=true) in your web app: Generate a random [nonce](https://en.wikipedia.org/wiki/Cryptographic_nonce). Let’s call this value NONCE. Save it temporarily so that you can verify it with the …

---

<div class="post-metadata">

### Author: ![david](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/david/32/157490_2.png) [@david](https://meta.discourse.org/u/david)
#### Post date: [Agosto 14, 2020, 8:02pm UTC](https://meta.discourse.org/t/could-discourse-offer-a-stackexchange-like-sso-federated-login-service/160914/3 "2020-08-14T20:02:35Z")

</div>

O que você descreveu foi muito discutido nos primórdios do Discourse. Existe uma tag para isso: #discourse\_hub

O tópico mais recente é de 2014:

> [@Revitalizing the Discourse Hub](https://meta.discourse.org/t/revitalizing-the-discourse-hub/15029?u=david):
>
> The original basic idea of the Discourse Hub have a reserved @username across all Discourse instances, so when someone sees @username on any Discourse forum, they’ll know it is (probably) you! … seems like kind of a bad idea in retrospect. Why? Well, if you run your own Discourse, and your name is @david, you probably want to be called @david, even if some other David reserved the name in Feburary 2013 here on meta. It is your community, after all, who are we to tell you that you can’t use y…

(além disso, acabei de perceber que Jeff usa o nome `@david` como exemplo, muitos anos antes mesmo de eu saber do Discourse 😂)

É uma ideia muito legal, mas há muitos obstáculos no caminho.

---

<div class="post-metadata">

### Author: ![alexweissman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/alexweissman/32/75300_2.png) [@alexweissman](https://meta.discourse.org/u/alexweissman)
#### Post date: [Agosto 14, 2020, 8:19pm UTC](https://meta.discourse.org/t/could-discourse-offer-a-stackexchange-like-sso-federated-login-service/160914/4 "2020-08-14T20:19:34Z")

</div>

Legal, obrigado! Parece que a SE resolveu muitos dos problemas descritos naquele tópico ao longo dos últimos seis anos ou mais (por exemplo, ela usa um número + nome de usuário como identificador único para os usuários).

O cerne da questão parece ser que, ao contrário da SE, o Discourse é descentralizado, com cada comunidade sendo totalmente controlada por quem controla o(s) servidor(es) onde ele é executado. Também argumentaria que aqueles administradores que não querem abrir mão de um pouco de controle para tornar sua comunidade mais acessível certamente poderiam ter a opção de não aderir ao Discourse Hub, entendendo que há um custo para essa decisão na forma de acessibilidade e engajamento dos usuários reduzidos.

---

<div class="post-metadata">

### Author: ![Falco](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/falco/32/179432_2.png) [@Falco](https://meta.discourse.org/u/Falco)
#### Post date: [Agosto 14, 2020, 8:36pm UTC](https://meta.discourse.org/t/could-discourse-offer-a-stackexchange-like-sso-federated-login-service/160914/5 "2020-08-14T20:36:07Z")

</div>

Certamente, poderíamos incluir um login social padrão para o provedor “DiscourseHub”, ativado por padrão e com recursos adicionais, como suporte completo a todos os campos padrão (nome de usuário, nome, e-mail, avatar, biografia) e até mesmo oferecer alguma sincronização bidirecional (tentar extrair os dados da conta de usuário recém-criada e publicar alguns detalhes no perfil central, como distintivos e melhores postagens). Poderíamos até usá-lo para promover as melhores práticas, como senhas mínimas robustas e autenticação de dois fatores obrigatória.

No entanto, se _devemos_ fazer isso é uma grande questão em aberto.

---

<div class="post-metadata">

### Author: ![supermathie](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/supermathie/32/507518_2.png) [@supermathie](https://meta.discourse.org/u/supermathie)
#### Post date: [Agosto 14, 2020, 9:09pm UTC](https://meta.discourse.org/t/could-discourse-offer-a-stackexchange-like-sso-federated-login-service/160914/6 "2020-08-14T21:09:34Z")

</div>

> [@alexweissman](#):
>
> tente lembrar minhas credenciais para que eu possa fazer login novamente no fórum

> [@alexweissman](#):
>
> Muito desse processo é prejudicado pela necessidade de criar uma nova conta para cada novo fórum em que desejo participar.

Quanto disso um diretório gerenciado centralmente (por nós) resolveria?

Você ainda precisará criar uma nova conta em cada site, e cada site pode ter (por exemplo) campos diferentes obrigatórios no cadastro. Poderíamos preencher a maioria, mas você ainda precisaria confirmá-los. O avatar já é bem atendido, por exemplo, pelo Gravatar.

sobre tentar lembrar suas credenciais: o login por e-mail é a melhor maneira de usar essas comunidades às quais você acessa com pouca frequência — eu o uso sempre que está habilitado.

> [@Falco](#):
>
> Agora, se _devemos_ fazer isso é uma grande questão em aberto.

Eu adoraria ver um problema sólido que _precise_ ser resolvido antes de considerarmos nos tornar mais um provedor de identidade. Vejo a descentralização como um recurso, não um defeito 🙂

---

<div class="post-metadata">

### Author: ![sam](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/sam/32/102149_2.png) [@sam](https://meta.discourse.org/u/sam)
#### Post date: [Agosto 19, 2020, 7:05am UTC](https://meta.discourse.org/t/could-discourse-offer-a-stackexchange-like-sso-federated-login-service/160914/7 "2020-08-19T07:05:18Z")

</div>

Sobre este tópico … um componente de tema que eu apoio 100% é uma mudança que torna a autenticação baseada 100% em e-mail.

- Para se registrar … tudo o que você faz é inserir endereço de e-mail, nome de usuário, nome … **sem senha**
- Para fazer login … tudo o que você faz é inserir endereço de e-mail … **sem senha**

Já suportamos login sem senha, via e-mail, mas isso está um pouco escondido. Eliminar a senha tornaria isso completamente óbvio e removeria bastante atrito.

Claramente não é um padrão do Discourse por enquanto, mas um componente de tema muito interessante, na minha opinião.
