Sign-In mit Ethereum-Plugin

:information_source: Zusammenfassung Sign-In mit Ethereum auf Discourse aktivieren
:hammer_and_wrench: Repository GitHub - signinwithethereum/discourse-siwe-auth: Discourse plugin for SIWE authentication · GitHub
:open_book: Installationsanleitung So installieren Sie Plugins in Discourse

Ein Discourse-Plugin, das Benutzern die Authentifizierung mit ihrer Ethereum-Wallet mithilfe des Sign-In with Ethereum (SIWE)-Standards ermöglicht. Eingebettete Wallets (MetaMask, Safe usw.) funktionieren sofort. ENS-Namen und Avatare werden serverseitig aufgelöst, sofern ein RPC-Endpunkt konfiguriert ist.

Voraussetzungen

  • Ein Discourse-Forum, das selbst gehostet wird oder von einem Anbieter gehostet wird, der Drittanbieter-Plugins unterstützt, wie z. B. Communiteq.

Installation

Greifen Sie auf die Datei app.yml Ihres Containers zu:

cd /var/discourse
nano containers/app.yml

Fügen Sie die Repository-URL des Plugins zum Hook after_code hinzu:

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 # <-- hinzugefügt

Halten Sie sich an das vorhandene Format der Zeile docker_manager.git; wenn diese Zeile nicht sudo -E -u discourse enthält, verwenden Sie stattdessen git clone https://github.com/signinwithethereum/discourse-siwe-auth.git.

Erstellen Sie den Container neu:

cd /var/discourse
./launcher rebuild app

Konfiguration

Nach der Installation finden Sie das Plugin unter Admin > Plugins und stellen sicher, dass es aktiviert ist:

Klicken Sie auf Einstellungen, um das Plugin zu konfigurieren:

Von hier aus können Sie die Anmeldeerklärung anpassen und optional eine WalletConnect / Reown-Projekt-ID hinzufügen. Ohne Projekt-ID sind nur eingebettete Wallets (MetaMask, Safe usw.) verfügbar.

Einstellungen

Einstellung Beschreibung
Discourse siwe enabled Sign-In mit Ethereum-Authentifizierung aktivieren oder deaktivieren.
Siwe ethereum rpc url Optional. Ein Ethereum JSON-RPC-Endpunkt, der für die ENS-Namen-/Avatar-Auflösung und die EIP-1271-Signaturüberprüfung verwendet wird (erforderlich für Smart-Contract-Wallets wie SAFE). Ein dedizierter Anbieter (Alchemy, Infura) wird empfohlen. Beispiel: https://mainnet.infura.io/v3/YOUR_KEY.
Siwe project ID Optional. Eine WalletConnect / Reown-Projekt-ID. Ohne diese sind nur eingebettete Wallets (MetaMask, Safe usw.) verfügbar. Um WalletConnect zu aktivieren, erstellen Sie eine kostenlose Projekt-ID unter dashboard.reown.com.
Siwe statement Die für Menschen lesbare Erklärung, die in der SIWE-Nachricht angezeigt wird. Standardmäßig “Sign in with Ethereum”.

Funktionsweise

Wenn ein Benutzer auf die Ethereum-Anmelde-Schaltfläche klickt, öffnet das Plugin eine dedizierte Authentifizierung. Der Benutzer verbindet seine Wallet, signiert eine SIWE-Nachricht und wird über eine OmniAuth-Strategie auf der Serverseite authentifiziert.

Nach der ersten Anmeldung werden Benutzer aufgefordert, eine E-Mail-Adresse mit ihrem Konto zu verknüpfen. Wenn eine RPC-URL konfiguriert ist und die verbundene Adresse einen ENS-Namen hat, wird der Name serverseitig aufgelöst und überprüft und als Standardbenutzername vorgeschlagen. ENS-Avatare werden über den ENS-Metadatendienst abgerufen und als Profilfoto verwendet.

Alternativ können bestehende Benutzer ihre Ethereum-Konten über ihre Profileinstellungen verbinden.

14 „Gefällt mir“

Hier gibt es eine Diskussion über Abhängigkeiten Discourse can't find gems specified in the plugin

Auf GitHub gefunden, scheint auch aktiv entwickelt zu werden. Es scheint Web3-Logins zu ermöglichen (erfordert nach der Anmeldung mit der Wallet immer noch E-Mail-Adressen).

Der Entwickler hat jedoch ein Problem, das die Installation des Plugins und das anschließende Bootstrapping von Discourse verhindert. Alle Details im untenstehenden Issue. Vielleicht ist es ein sehr einfaches Problem und jemand hier kann einen PR für den Entwickler einreichen.

1 „Gefällt mir“

Halte mein Bier :wink:
Lösung im Github-Issue.

3 „Gefällt mir“

Das ist großartig, ich probiere es sofort aus. Ich hoffe, das hilft auch dem Entwickler :grinning_face:

EDIT: Ich scheine mit demselben Fehler zu enden, obwohl es so aussieht, als ob das Gem installiert wird:

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.

Können Sie das bitte tun?

2 „Gefällt mir“

Beim Durchgehen der Protokolle poste ich Dinge, die meiner Meinung nach relevant sein könnten.

@moderators vielleicht eine Themenaufteilung dafür? Es gibt kein offizielles Thema von diesem Plugin, ich glaube nicht, dass der Entwickler auf Meta ist.

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)

Ich sehe im Moment keine anderen Fehler (oder ich übersehe sie, die Protokolle sind lang).

1 „Gefällt mir“

Um ehrlich zu sein, ich folge nicht dem Kern dessen, was hier vor sich geht. :slightly_smiling_face: @RGJ und @michaeld haben die Befugnis zu teilen, also werden sie vielleicht die Ehre haben und es auf sensiblere Weise als ich verwalten. :slightly_smiling_face::crossed_fingers: (oder alternativ den Beitrag auswählen, von dem geteilt werden soll, die Kategorie benennen, in die er gehen soll, und mir einen Titel mitteilen, den ich ihm geben soll :+1:)

1 „Gefällt mir“

Mein Vorschlag ist hier aufgeteilt:

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

Die am besten geeignete Kategorie wäre Support oder #plugins (ich bin mir nicht sicher… wie gehen wir mit Plugins um, die nicht von einem Mitglied von Meta entwickelt wurden… vielleicht tritt er Meta bei oder wir können ihn eines Tages über GitHub zu Meta einladen?)

EDIT:

Das scheint der Entwickler zu sein, also ist er auf Meta? @w4ll3

@michaeld hat gestern einen PR dafür erstellt, aber er ist noch nicht gemerged. Sie können in der Zwischenzeit GitHub - communiteq/discourse-siwe-auth: Discourse plugin for SIWE authentication verwenden.

3 „Gefällt mir“

Kann bestätigen, dass dies funktioniert! Danke, Michael.

1 „Gefällt mir“

Zusammenfassend lässt sich sagen, dass Sie sowohl den before_code benötigen, wie in der Issue Cannot Install Plugin on Self-Hosted Discourse server - rbsecp256k1 · Issue #15 · spruceid/discourse-siwe-auth · GitHub beschrieben, ALS AUCH die neuere Version des eth-Gems, für das ich den (derzeit nicht gemergten) PR erstellt habe.

5 „Gefällt mir“

Hier etwas spät im offiziellen Forum, aber hey – Rocco vom Spruce-Team.

Danke nochmals @michaeld für die Fehlerbehebungen, das hat es behoben und wir haben die Dokumentation von unserer Seite aktualisiert. Danke auch, dass du das alles angesprochen hast – wir entwickeln und pflegen die Dinge rund um Sign-In with Ethereum weiterhin aktiv.

Ich war auch neugierig – gibt es einen Weg, dies schließlich zu einem offiziell unterstützten Plugin zu machen :grinning: – wir lieben Discourse und wollen herausfinden, wie wir diese Funktionalität auf Instanzen erweitern können, die nicht selbst gehostet sind.

2 „Gefällt mir“

Nur zur Klarstellung: Communiteq unterstützt dieses Plugin auch auf unseren Managed-Hosting-Plänen. Es ist ab dem Professional-Plan verfügbar.

3 „Gefällt mir“

Entschuldigen Sie das bitte!

Keine Entschuldigung nötig! Das offizielle Hosting hat es (noch?) nicht. Ich wollte nur unser Engagement für diese Web3-Plugins hervorheben.

3 „Gefällt mir“

Leider keine offiziell unterstützte Plugin.

Aber auf jeden Fall ein Lob für die Unterstützung von Communiteq! Alles, was zur Unterstützung von Web3-Nutzern beiträgt, ist wirklich großartig.

Von unserer Seite aus arbeiten wir an verschiedenen Möglichkeiten, die Einführung von Sign-In with Ethereum zu unterstützen, und Discourse stand immer ganz oben auf unserer Liste. Deshalb haben wir, nachdem wir es EIP-4361 standardisiert hatten, das Plugin erstellt. Das andere, was uns wichtig war, ist, was wir noch hinzufügen können – wobei der benutzerdefinierte RPC-Anbieter eines der ersten Elemente ist.

3 „Gefällt mir“

Dieses Plugin funktioniert bei mir nicht, es gibt ein Problem mit dem Plugin, das nicht installiert werden kann. Kann mir jemand eine Alternative nennen oder bei diesem helfen @michaeld @RGJ

Sie müssen Details mitteilen, wenn Sie Hilfe wünschen.

1 „Gefällt mir“

@RGJ Wenn ich versuche, dieses Plugin zu installieren, schlägt der Wiederaufbau mit diesem Fehler fehl

Sie geben das Gem rbsecp256k1 in /var/www/discourse/plugins/discourse-siwe-auth/plugin.rb an, jedoch existiert es nicht!
Gesucht nach: /var/www/discourse/plugins/discourse-siwe-auth/gems/2.7.6/specifications/rbsecp256k1-5.1.0.gemspec