Configurar cadastro e login com Auth0 usando o Plugin Básico OAuth2

(oauth2_basic) Falha na autenticação! csrf_detected: OmniAuth::Strategies::OAuth2::CallbackError, csrf_detected | CSRF detectado

Alguma ideia?

É possível fazer do Auth0 a única maneira de se registrar e entrar?

Sim, basta desabilitar todos os outros métodos de login. (incluindo a configuração ‘habilitar logins locais’)

1 curtida

É possível redirecionar diretamente para o cadastro do Auth0 sem exibir o formulário básico de cadastro?

Se você deseja ocultar toda a interface de login/registro do Discourse, pode desativar a configuração do site “habilitar logins locais”.

1 curtida

Obrigado, David. Fiz isso, mas notei que, ao me cadastrar usando o modal e ser redirecionado de volta para o Discourse, ele solicita novamente um nome de usuário e outros detalhes, o que indica que o Auth0 não está passando essas informações de volta para o Discourse. Estou me perguntando se a solução seria manter o modal simples, com apenas endereço de e-mail e senha no modal de registro do Auth0, e obter o restante dos detalhes no Discourse.
O problema é que queremos manter os dados do usuário em um único local, usando um banco de dados personalizado conectado ao Auth0.

como posso definir o redirecionamento após o logout? não consigo encontrar nada sobre logout.

Para exigir a validação do endereço de e-mail apenas se o usuário ainda não a confirmou no Auth0, o valor de caminho do e-mail verificado oauth2 json é email_verified.

Encontrei isso ativando a configuração oauth2 debug auth e inspecionando os logs em <DISCOURSE_URL>/logs. Quando fiz login usando uma conta não verificada, o corpo parecia assim:

OAuth2 Debugging: 
user_json: {
  "sub"=>"auth0|XXXXXX", 
  "nickname"=>"YYYYY+unprovenauth", 
  "name"=>"YYYYYY+unprovenauth@ZZZZZZ.com", 
  "picture"=>"https://via.placeholder.com/150", 
  "updated_at"=>"2022-09-21T07:50:40.172Z", 
  "email"=>"YYYYYY+unprovenauth@ZZZZZZ.com", 
  "email_verified"=>false
}
1 curtida

@david
Espero que você possa ajudar - eu gostaria de configurar o Discourse para fazer login usando o login XBL da Microsoft e pensei que este plugin poderia ser um bom começo.

Eu postei este tópico em dev:

Existe um fórum Discourse do Minecraft chamado “The Hive” que utiliza o que queremos fazer - eu só não consigo encontrar um plugin para ele. :slight_smile:

Olá!

Existe uma maneira de exigir login para postar na comunidade, mas permitir que as postagens sejam visualizadas sem login?

Habilitamos o plugin Auth0 para nossa comunidade. E removemos todas as outras formas de login e postagem anônima - essencialmente, queremos garantir que as pessoas sejam clientes nossos antes de postarem na comunidade de usuários. Mas ainda gostaríamos que as postagens fossem visualizáveis por outras pessoas, mesmo que elas não tenham feito login.

Da maneira que consegui fazer o plugin Auth0 funcionar, ele exige que você faça login antes mesmo de visualizar o conteúdo. Estou perdendo alguma configuração ou algo assim?

Obrigado!

Parece que você ativou a opção login required. Com ela ativada, apenas pessoas com conta podem ver as postagens do fórum. Você deve conseguir usar SSO sem precisar ativar essa opção. :+1:

1 curtida

este URL é retornado logo após a criação da conta ser concluída e antes que o usuário final possa validar seu e-mail no Auth0. Existe uma maneira de impedir que ele seja transferido para a comunidade antes que o e-mail seja validado?

Estou tendo alguns problemas para configurar isso. Após habilitar tudo e passar pelo processo de inscrição no meu Discourse, ele envia para o Auth0 normalmente, mas quando volto, vejo uma mensagem de erro (“Oops O software que alimenta este fórum de discussão encontrou um problema inesperado. Pedimos desculpas pelo inconveniente.”).

Olhando nos logs, vejo o que acho que é o erro:

ActiveRecord::NotNullViolation (PG::NotNullViolation: ERROR: null value in column "provider_uid" of relation "user_associated_accounts" violates not-null constraint

Verifiquei novamente se configurei tudo de acordo com as instruções, parece que esse problema pode ser causado pelo “Caminho do ID do usuário JSON do OAuth2” estar incorreto e esse campo estar vazio? Eu o defini como sub.

Presumindo que o IDP forneça campos separados como user.name.first e user.name.last, em vez de user.name.full conforme o exemplo da descrição do campo…

Seria possível concatenar o valor do caminho de nome JSON do OAuth2 de múltiplos caminhos de dados do usuário?