Configurar registro e inicio de sesión con Auth0 usando el 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 me gusta

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 me gusta

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 requerir la validación de la dirección de correo electrónico solo si el usuario aún no la ha confirmado en Auth0, el valor de oauth2 json email verified path es email_verified.

Encontré esto habilitando la configuración oauth2 debug auth e inspeccionando los registros en <DISCOURSE_URL>/logs. Cuando inicié sesión con una cuenta no verificada, el cuerpo se veía así:

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 me gusta

@david
Espero que puedas ayudar: me gustaría configurar Discourse para iniciar sesión usando el inicio de sesión XBL de Microsoft y pensé que este plugin podría ser una forma de empezar.
Publiqué este hilo en dev:

Hay un foro de Discourse de Minecraft llamado “The Hive” que utiliza lo que queremos hacer; simplemente no puedo encontrar un plugin para él. :slight_smile:

¡Hola!

¿Hay alguna forma de requerir un inicio de sesión para publicar en la comunidad, pero permitir que las publicaciones sean visibles sin iniciar sesión?

Hemos habilitado el plugin Auth0 para nuestra comunidad. Y hemos eliminado todas las demás formas de inicio de sesión y publicación anónima; esencialmente, queremos asegurarnos de que las personas sean clientes nuestros antes de publicar en la comunidad de usuarios. Pero aún así nos gustaría que las publicaciones fueran visibles para otros, incluso si no han iniciado sesión.

La forma en que pude hacer que el plugin Auth0 funcionara, requiere que inicies sesión antes de ver el contenido. ¿Me falta algún interruptor o algo?

¡Gracias!

Parece que has activado login required. Con esa opción activada, solo las personas con una cuenta pueden ver las publicaciones del foro. Deberías poder tener SSO sin necesidad de activarla. :+1:

1 me gusta

esta URL se devuelve justo después de que se crea el registro y antes de que el usuario final pueda validar su correo electrónico en Auth0. ¿Hay alguna forma de evitar que se transfiera a la comunidad antes de que se valide el correo electrónico?

Tengo algunos problemas para configurar esto. Después de habilitar todo y luego pasar por el proceso de registro en mi Discourse, se envía a Auth0 sin problemas, pero cuando regreso, veo un mensaje de error (“Oops El software que impulsa este foro de discusión encontró un problema inesperado. Lamentamos las molestias”).

Mirando en los registros, veo lo que creo que es el error:

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

He verificado que he configurado todo de acuerdo con las instrucciones. Parece que este problema podría ser causado por un valor incorrecto en el campo “Ruta del ID de usuario JSON de OAuth2” y que este campo esté vacío. Lo he configurado en sub.

Presumiendo que el IDP proporciona campos separados como user.name.first y user.name.last, en lugar de user.name.full como se da en el ejemplo de descripción del campo…

¿Sería posible concatenar el valor de la ruta de nombre JSON de OAuth2 de múltiples rutas de datos JSON de usuario?