Detener a Discord de pedir autenticación en cada inicio de sesión

Hola.

He configurado el inicio de sesión de Discord en mi instalación autoalojada. Funciona muy bien… excepto por una pequeña cosa.

Cuando un usuario inicia sesión con Discord, se le lleva a la página de autorización cada vez, lo que significa que tiene que aceptar la autorización cada vez que inicia sesión. Por lo que entiendo, este debería ser solo un proceso de un solo paso la primera vez que conectan el inicio de sesión de Discord con Discourse.

¿Cómo se puede solucionar esto? Seguí la documentación.

3 Me gusta

¿Alguien está enfrentando este problema?

2 Me gusta

Sí, probé en mi instancia y puedo replicar el problema.

2 Me gusta

¿Observas el mismo comportamiento en otros sitios que ofrecen “iniciar sesión con Discord”? Si es así, podría ser el comportamiento esperado del sistema de inicio de sesión de Discord, en lugar de un problema específico de Discourse.

Este no es el comportamiento esperado. Otros sitios y foros que uso con inicio de sesión con Discord solo requieren una autenticación una vez. Después de eso, cada vez que inicias sesión con Discord, estás automáticamente conectado sin tener que ir a la página de autenticación.

Tiene que ver con Discourse.

¿Hay un ejemplo público que puedas compartir para que podamos probarlo y comparar la implementación?

No estoy seguro de lo que quieres decir con ejemplo público, lo siento.

Sin embargo, esto no es la norma. Solo debería requerir autenticación de Discord, solo la primera vez.

Quiero decir:

¿Puedes compartir un enlace a uno de ellos? Así podríamos ver cómo están implementados y ajustar Discourse para que coincida.

Aquí hay un foro que frecuento, pero no es software de Discourse.

https://famiboards.com/

1 me gusta

Me pregunto si es por el parámetro prompt faltante a none en la URL de autorización.

prompt controla cómo el flujo de autorización maneja las autorizaciones existentes. Si un usuario ha autorizado previamente tu aplicación con los ámbitos solicitados y prompt se establece en consent, se le pedirá que vuelva a aprobar su autorización. Si se establece en none, omitirá la pantalla de autorización y lo redirigirá de vuelta a tu URI de redirección sin solicitar su autorización.

1 me gusta

Creo que podrías estar en lo cierto. Encontré esto.
https://community.auth0.com/t/discord-connection-prompts-for-consent-every-login/135157
¿Quizás esto podría actualizarse dentro de Discourse? Hasta donde sé, esto no es algo que pueda hacer en mi panel de administración, ni en el portal de desarrolladores de Discord.

2 Me gusta

Hay una configuración de indicación para Google Auth en Discourse, y creo que sería razonable agregar una para Discord.

1 me gusta

También acabo de notar esto.

¿Sabes en qué archivo de Discourse está instalado la configuración de inicio de sesión? Estoy pensando en colocar

"upstream_params": {
	"prompt": {
	"value": "none"
	}
},

dentro del archivo y volver a construir, viendo si eso lo soluciona.

Editar: Pensándolo bien, no creo que pueda localizar el archivo que me permita implementar esto. Creo que se necesita una solución de Discourse para que funcione como se espera.

Ya que tengo el problema en mi instancia:

Sí, espera noticias del equipo :+1:

1 me gusta

Genial. ¿Necesito hacer algo más (aparte de esperar una actualización)?

Supongo que no hay una fecha estimada real para una solución como esta, y probablemente dependa de un flujo de estado de urgencia. Es solo un pequeño inconveniente, supongo. ¡Pero sería genial verlo solucionado!

Un cambio para agregar prompt=none me parece bien. Si alguien puede escribir, probar y hacer una PR, eso ayudará a agilizar el cambio.

El archivo relevante sería este, pero no sé de inmediato qué cambio se requeriría.

2 Me gusta

Al revisar el archivo, agregué

option :authorize_params, prompt: 'none'

debajo de

option :authorize_options, %i[scope permissions]

en mi instalación autoalojada.

Funciona más o menos…, pero no como nos gustaría.

Todavía te lleva a la página de autenticación de Discord, sin embargo, el usuario ya no tiene que hacer clic en authorize. La página se recargará y luego te llevará de regreso a tu página de Discourse.

Un paso adelante, otro paso atrás. :melting_face:

Editar: Veo que @Arkshine y yo probamos el cambio y obtuvimos el mismo resultado.

1 me gusta

Hice una prueba rápida (https://discourse.arkshine.dev/):

Muestra la página de autenticación pero redirige automáticamente.

1 me gusta

Incluso con el cambio, todavía te dirige a la página de autenticación de Discord, lo cual no debería hacer (aunque esta vez no necesitas presionar manualmente authenticate).

Enviar un PR con el cambio sugerido lamentablemente no solucionaría el problema.