Use o plugin OAuth para Auth0 de forma mais integrada

Estou tentando implementar a autenticação Auth0 no meu aplicativo Discourse. Segui essencialmente o fluxo aqui e consegui fazer funcionar.

No entanto, não estou totalmente satisfeito por vários motivos:

  1. Após clicar em “entrar”/“inscrever-se”, há apenas um botão “com Auth0”. Quero que o painel de login/inscrição do Auth0 seja a única coisa que aparece após clicar em “entrar”/“inscrever-se” no topo da página do Discourse.
  2. Após a autenticação com o Auth0, as pessoas não deveriam ter que criar um novo usuário, em vez disso, tudo deveria funcionar bem por causa do Auth0.
  3. A autenticação por e-mail deveria ser ou ter sido tratada via Auth0, não via Discourse.
  4. Se você já fez login via Auth0 nesse navegador, possivelmente com o mesmo aplicativo do Auth0, em outro módulo da nossa plataforma, você deverá ser conectado automaticamente.
  5. Ainda deve haver a possibilidade de fazer login como usuário administrador, pois isso pode se mostrar mais desafiador após a implementação do ponto nº 1.

Você poderia me ajudar a configurar tudo ou pelo menos partes disso?

Acredito que você possa verificar esta configuração no Discourse auth_overrides_email para isso.

E você pode usar esta configuração de visão para isso: auth_skip_create_confirm

Ao se inscrever por meio de autenticação externa, pule o pop-up de criação de conta. Melhor usado em conjunto com auth_overrides_email, auth_overrides_username e auth_overrides_name.

Há também a configuração auth_immediately, que pode fazer o que você procura também:

Redirecione automaticamente para o sistema de login externo sem interação do usuário. Isso só entra em vigor quando login_required é verdadeiro e há apenas um método de autenticação externa.

Você pode visitar /u/admin-login para ignorar o oauth.

3 curtidas

Muito obrigado pela sua contribuição, @blake :slight_smile:

Você também tem alguma contribuição para os pontos 1 e 4 ou estes são mais difíceis?

Eu acho que essas configurações auth_immediatley e auth_skip_create_confirm resolverão os pontos 1 e 4. Você pode ativá-las e ver se as coisas melhoram?

@blake Muito obrigado pela sua contribuição.

Fiz tudo conforme descrito na página de configuração, mais suas sugestões. No entanto, quando tento fazer login, isso aparece:

Enquanto em https://community.auth0.com/ é isso que aparece ao tentar fazer login (e é o que se destina ao meu site também):

Além disso, tentei fazer login com meu e-mail de teste e ele ainda exige autenticação por e-mail, apesar de o e-mail estar autenticado no Auth0:

Você sabe como mudar isso de acordo?

Tente desabilitar as configurações de enable local logins. Isso deve remover a capacidade de login, deixando seus usuários apenas com a opção de fazer login com OAuth2.

Eu recomendaria fazer isso em uma sessão de navegador separada. Dessa forma, você pode reverter quaisquer alterações que fizer se tiver problemas de configuração sem perder a capacidade de fazer login.

Olá @blake

Obrigado pelas informações. Fiz alguns progressos, mas infelizmente ainda há um pequeno problema com o login. Sempre que clico no botão de login, as informações corretas do usuário são obtidas do Auth0, mas o Discourse ainda tenta criar uma conta.
Sou levado para uma tela de Bem-vindo, vamos criar sua conta com um erro que diz O e-mail principal já foi utilizado.

Esta é a minha configuração atual para todas as substituições:

Por favor, ajude, obrigado.

Olá Robert!

Você pode corrigir isso habilitando esta configuração: oauth2 allow association change

Olá @leonardo, infelizmente o problema ainda persiste após ativar essa configuração.

de alguma forma está funcionando bem agora. Adicionei a regra oauth2 email verified e agora está funcionando. Interessante.

Adorei este plugin. Percebo que quando faço logout, ele me desconecta do Discourse. Mas quando clico em “entrar”… ele me reconecta imediatamente (sem ir para o Auth0). Permiti o URI de logout no meu App Auth0, mas parece que https://AUTH0_DOMAIN/v2/logout nunca é chamado por este plugin. Quem mantém isso? Isso pode ser adicionado?