Plugin de inicio de sesión con Ethereum

:information_source: Resumen Habilitar el inicio de sesión con Ethereum en Discourse
:hammer_and_wrench: Repositorio GitHub - signinwithethereum/discourse-siwe-auth: Discourse plugin for SIWE authentication · GitHub
:open_book: Guía de instalación Cómo instalar complementos en Discourse

Un complemento para Discourse que permite a los usuarios autenticarse con su billetera de Ethereum utilizando el estándar Sign-In with Ethereum (SIWE). Las billeteras inyectadas (MetaMask, Safe, etc.) funcionan de inmediato. Los nombres ENS y las imágenes de perfil se resuelven en el servidor cuando se configura un punto final RPC.

Requisitos

  • Un foro de Discourse autoalojado o alojado con un proveedor que admita complementos de terceros, como Communiteq.

Instalación

Accede al archivo app.yml de tu contenedor:

cd /var/discourse
nano containers/app.yml

Agrega la URL del repositorio del complemento al hook after_code:

hooks:
  after_code:
    - exec:
      cd: $home/plugins
      cmd:
        - sudo -E -u discourse git clone https://github.com/discourse/docker_manager.git
        - sudo -E -u discourse git clone https://github.com/signinwithethereum/discourse-siwe-auth.git # <-- agregado

Sigue el formato existente de la línea docker_manager.git; si no contiene sudo -E -u discourse, usa git clone https://github.com/signinwithethereum/discourse-siwe-auth.git en su lugar.

Reconstruye el contenedor:

cd /var/discourse
./launcher rebuild app

Configuración

Después de la instalación, busca el complemento en Admin > Complementos y asegúrate de que esté habilitado:

Haz clic en Configuración para configurar el complemento:

Desde aquí puedes personalizar el mensaje de inicio de sesión y opcionalmente agregar un ID de proyecto de WalletConnect / Reown. Sin un ID de proyecto, solo estarán disponibles las billeteras inyectadas (MetaMask, Safe, etc.).

Configuración

Configuración Descripción
Discourse siwe enabled Habilitar o deshabilitar la autenticación con Sign-In with Ethereum.
Siwe ethereum rpc url Opcional. Un punto final JSON-RPC de Ethereum utilizado para la resolución de nombres ENS/imágenes de perfil y la verificación de firmas EIP-1271 (requerido para billeteras de contratos inteligentes como SAFE). Se recomienda un proveedor dedicado (Alchemy, Infura). Ejemplo: https://mainnet.infura.io/v3/YOUR_KEY.
Siwe project ID Opcional. Un ID de proyecto de WalletConnect / Reown. Sin él, solo estarán disponibles las billeteras inyectadas (MetaMask, Safe, etc.). Para habilitar WalletConnect, crea un ID de proyecto gratuito en dashboard.reown.com.
Siwe statement El mensaje legible por humanos que se muestra en el mensaje SIWE. Por defecto es “Sign in with Ethereum”.

Cómo funciona

Cuando un usuario hace clic en el botón de inicio de sesión con Ethereum, el complemento abre un proceso de autenticación dedicado. El usuario conecta su billetera, firma un mensaje SIWE y se autentica mediante una estrategia OmniAuth en el lado del servidor.

Después del primer inicio de sesión, se le pedirá a los usuarios que asocien una dirección de correo electrónico con su cuenta. Si se configura una URL RPC y la dirección conectada tiene un nombre ENS, el nombre se resuelve y verifica en el servidor y se sugiere como nombre de usuario predeterminado. Las imágenes de perfil ENS se obtienen a través del servicio de metadatos de ENS y se utilizan como foto de perfil.

Alternativamente, los usuarios existentes pueden conectar sus cuentas de Ethereum a través de la configuración de su perfil.

14 Me gusta

alguna discusión sobre dependencias aquí Discourse can't find gems specified in the plugin

Lo encontré en GitHub, parece que también se está desarrollando activamente. Parece que permite inicios de sesión web3 (aún requiere direcciones de correo electrónico después de iniciar sesión con tu billetera).

Sin embargo, el desarrollador se enfrenta a un problema que impide la instalación del plugin y el arranque de Discourse después. Todos los detalles en el problema a continuación. Quizás sea un problema muy simple y alguien aquí pueda enviar una PR para el desarrollador.

1 me gusta

Sostén mi cerveza :wink:
Solución en el issue de Github.

3 Me gusta

Eso es increíble, lo estoy probando ahora mismo. Espero que esto también ayude al desarrollador :grinning_face:

EDITAR: Termino con el mismo error, parece, aunque parece que la gema se está instalando:

version 2.3.0.
Successfully installed rubyzip-2.3.2
1 gem installed
FAILED
--------------------
Pups::ExecError: cd /var/www/discourse && su discourse -c 'bundle exec rake db:migrate' failed with return #<Process::Status: pid 777 exit 1>
Location of failure: /usr/local/lib/ruby/gems/2.7.0/gems/pups-1.1.1/lib/pups/exec_command.rb:117:in `spawn'
exec failed with the params {"cd"=>"$home", "hook"=>"db_migrate", "cmd"=>["su discourse -c 'bundle exec rake db:migrate'"]}
bootstrap failed with exit code 1
** FAILED TO BOOTSTRAP ** please scroll up and look for earlier error messages, there may be more than one.
./discourse-doctor may help diagnose the problem.

¿Puedes hacer esto, por favor?

2 Me gusta

Revisando los registros, publico lo que creo que podría ser relevante.

@moderadores ¿quizás una división de temas para esto? No hay un tema oficial de este plugin, no creo que el desarrollador esté en meta.

I, [2022-07-04T16:43:46.394301 #1]  INFO -- : cd /var/www/discourse & su discourse -c 'bundle exec rake db:migrate'
rake aborted!
Gem::ConflictError: Unable to activate eth-0.5.1, because openssl-3.0.0 conflicts with openssl (~> 2.2)

No veo ningún otro error en este momento (o me los estoy perdiendo, los registros son largos).

1 me gusta

Para ser sincero, no entiendo de qué va todo esto. :slightly_smiling_face: @RGJ y @michaeld tienen el poder de dividir, así que quizás hagan los honores y lo gestionen de una manera más sensible de la que yo lo haré. :slightly_smiling_face::crossed_fingers: (o, alternativamente, elige la publicación de la que dividir, nombra la categoría en la que quieres que vaya y hazme saber un título para darle :+1:)

1 me gusta

Mi sugerencia es dividirla de aquí:

https://meta.discourse.org/t/web-3-0-features/203321/19?u=marcp

La categoría más adecuada sería Support o #plugins (no estoy seguro… ¿cómo tratamos los plugins que no son desarrollados por un miembro de Meta? ¿quizás él se unirá a Meta o podremos invitarlo a través de GitHub a Meta algún día?)

EDITAR:

Parece que este es el desarrollador, así que está en Meta? @w4ll3

@michaeld hizo un PR para esto ayer, pero aún no se ha fusionado. Mientras tanto, puedes usar GitHub - communiteq/discourse-siwe-auth: Discourse plugin for SIWE authentication.

3 Me gusta

¡Puedo confirmar que esto funciona! Gracias, Michael.

1 me gusta

En resumen, necesitas tanto el before_code como se describe en el problema Cannot Install Plugin on Self-Hosted Discourse server - rbsecp256k1 · Issue #15 · spruceid/discourse-siwe-auth · GitHub COMO la versión más reciente del gem eth para la que hice el PR (actualmente sin fusionar).

5 Me gusta

Un poco tarde aquí en el foro oficial, pero hola, Rocco del equipo de Spruce.

Gracias de nuevo @michaeld por las correcciones, se encargaron de ello y actualizamos la documentación por nuestra parte. También gracias por plantear todo esto, todavía estamos desarrollando / manteniendo activamente cosas en torno a Sign-In with Ethereum.

También tenía curiosidad: ¿hay alguna forma de convertir esto en un plugin oficialmente compatible? :grinning: - nos encanta Discourse y queremos encontrar la manera de extender esta funcionalidad a instancias que no están autohospedadas.

2 Me gusta

Solo para aclarar, Communiteq admite este complemento en nuestros planes de alojamiento administrado, está disponible en el plan Profesional y superiores.

3 Me gusta

¡Mis disculpas por eso!

¡No hay necesidad de disculparse! El hosting oficial no lo tiene (¿todavía?). Solo quería enfatizar nuestro compromiso con estos plugins web3.

3 Me gusta

Sí, lamentablemente no es un plugin compatible oficialmente.

Pero definitivamente felicitaciones por el apoyo de Communiteq. Cualquier cosa para ayudar a apoyar a los usuarios de Web3 es realmente increíble.

Por nuestra parte, estamos trabajando en diversas formas de apoyar la adopción de Sign-In with Ethereum y Discourse siempre estuvo en lo más alto de nuestra lista, por eso, después de estandarizarlo EIP-4361, creamos el plugin. La otra cosa que ha estado en nuestra mente es qué más añadirle, siendo el proveedor de RPC personalizado una de las primeras piezas.

3 Me gusta

Este plugin no me funciona, hay algún problema con el plugin, no puedo instalarlo, ¿alguien puede compartir una alternativa o ayudarme con este @michaeld @RGJ

Necesitarás compartir detalles si quieres ayuda.

1 me gusta

@RGJ cuando intento instalar este plugin, la reconstrucción falla con este error

Estás especificando la gema rbsecp256k1 en /var/www/discourse/plugins/discourse-siwe-auth/plugin.rb, ¡sin embargo, no existe!
Buscado: /var/www/discourse/plugins/discourse-siwe-auth/gems/2.7.6/specifications/rbsecp256k1-5.1.0.gemspec