Zum Hauptinhalt springen
Change page

Authentifizierung auf Ethereum

Wenn du aus der traditionellen Webentwicklung kommst, bist du an die Anmeldung mit Benutzername/Passwort, OAuth-Abläufe und Sitzungscookies gewöhnt. Die Authentifizierung auf Ethereum funktioniert anders – und in vielerlei Hinsicht einfacher.

Auf Ethereum beweist ein Benutzer seine Identität durch das Signieren einer Nachricht mit seiner Wallet. Kein Passwort, das gespeichert werden muss. Keine Datenbank mit Zugangsdaten, die geleakt werden kann. Nur Kryptographie.

Wie unterscheidet es sich von Web2?

Web2Ethereum
Benutzername + PasswortWallet-Adresse + Signatur
Server speichert ZugangsdatenBenutzer besitzt privaten Schlüssel
Sitzungen über Cookies / JWT verwaltetSitzungen beginnen mit einer offchain Wallet-Signatur
"Mit Google anmelden""Mit Ethereum anmelden"
Passwort-ZurücksetzungsprozesseWiederherstellung per Seed-Phrase

Der grundlegende Wandel: Im Web2 authentifiziert dich ein zentraler Server. Auf Ethereum authentifizierst du dich selbst, indem du beweist, dass du eine bestimmte Adresse kontrollierst – und jeder kann dies unabhängig verifizieren.

Voraussetzungen

Stelle sicher, dass du Folgendes verstehst:

Wie die Wallet-basierte Authentifizierung funktioniert

Der grundlegende Ablauf ist einfach:

  1. Deine dezentrale Anwendung (Dapp) bittet den Benutzer, seine Wallet zu verbinden (über MetaMask, Rainbow, WalletConnect usw.)
  2. Die Wallet teilt die Ethereum-Adresse des Benutzers – dies ist seine öffentliche Kennung
  3. Deine Dapp generiert eine eindeutige Nachricht (eine Nonce oder Challenge)
  4. Der Benutzer signiert die Nachricht mit seinem privaten Schlüssel (geschieht innerhalb der Wallet)
  5. Dein Backend verifiziert die Signatur anhand der angegebenen Adresse
  6. Wenn sie gültig ist, ist der Benutzer authentifiziert

Es wurde nie ein Passwort eingegeben, gespeichert oder übertragen.

Sign-In with Ethereum (EIP-4361)

EIP-4361 (öffnet in einem neuen Tab) definiert ein Standard-Nachrichtenformat für die Anmeldung mit Ethereum, das allgemein als SIWE (Sign-In with Ethereum) bezeichnet wird. Es ersetzt das Ad-hoc-Signieren von Nachrichten durch einen strukturierten, sicheren Standard.

Eine SIWE-Nachricht sieht so aus:

Hauptmerkmale von SIWE:

  • Domain-Bindung – die Nachricht enthält die Domain, was Phishing verhindert
  • Chain-ID – gibt an, für welches Netzwerk die Signatur gültig ist
  • Nonce – verhindert Replay-Angriffe
  • Ablaufdatum – optionaler Zeitstempel, der das Gültigkeitsfenster begrenzt
  • Ressourcen – optionale URIs für bereichsbezogenen Zugriff

SIWE-Bibliotheken

Beispiel: Clientseitige Anmeldung mit siwe

Beispiel: Serverseitige Verifizierung (Node.js)

Bibliotheken für die Wallet-Verbindung

Vor der Authentifizierung muss der Benutzer seine Wallet verbinden. Diese Bibliotheken machen es einfach:

Signaturen manuell verifizieren

Wenn du SIWE lieber nicht verwenden möchtest, kannst du Signaturen auch direkt verifizieren:

Wichtige Sicherheitshinweise

  • Verwende immer eine Nonce – verhindert Replay-Angriffe, bei denen eine alte Signatur wiederverwendet wird
  • Schließe die Domain ein – verhindert, dass Signaturen über verschiedene Websites hinweg gültig sind
  • Überprüfe das Ablaufdatum – Signaturen sollten ein begrenztes Gültigkeitsfenster haben
  • Verwende SIWE (EIP-4361), wenn möglich – es übernimmt all das für dich
  • Lege niemals private Schlüssel offen – das Signieren geschieht innerhalb der Wallet; deine App sieht nur das Ergebnis

Sitzungsverwaltung

Sobald du authentifiziert bist, benötigst du weiterhin Sitzungen – genau wie im Web2. Gängige Muster:

  • JWT-Token – stelle nach der Verifizierung der Signatur ein JWT aus und verwende es für API-Anfragen
  • Serverseitige Sitzungen – speichere die verifizierte Adresse in einem Sitzungscookie
  • SIWE mit Ressourcen – definiere bereichsbezogene Zugriffstoken, die mit bestimmten URIs verknüpft sind

Der Hauptunterschied zum Web2: Die Ethereum-Adresse des Benutzers ist seine dauerhafte Identität. Er kann sie in jeder Dapp verwenden, ohne ein neues Konto erstellen zu müssen.

Dezentrale Identität

Die Ethereum-Authentifizierung ist Teil einer breiteren Bewegung hin zu einer selbstsouveränen Identität. Zu den Standards und Projekten in diesem Bereich gehören:

Weiterführende Literatur