Configurar inscrição e login com Auth0 usando o plugin OAuth2 Basic

(oauth2_basic) Authentication failure! csrf_detected: OmniAuth::Strategies::OAuth2::CallbackError, csrf_detected | CSRF detected

Any ideas?

Is it possible to make Auth0 the only possible way to register and login?

Yes, just disable all the other login methods. (including the enable local logins setting)

1 curtida

Is it possible to just redirect to the Auth0 signup and not display the basic signup form?

If you want to hide all the Discourse login/signup UI, then you can turn off the enable local logins site setting

1 curtida

Thanks David. I did that but I’ve noticed that when I sign up using the modal and get redirected back to Discourse, it prompts again for a username and other details so it doesn’t look like Auth0 is passing that information back to Discourse. I’m wondering if the solution is to keep the modal simple with just email address and password on the Auth0 modal for registration and get the rest of the details on Discourse.
Problem is we want to keep the user data in one place using a custom database attached to Auth0.

how can i set logout redirect to i cant found anything about 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.