OAUTH-GESCHICHTE: VON PASSWÖRTERN ZU GLOBALEN STANDARDS

Man sieht es jeden Tag. Sie klicken auf „Mit Google anmelden“ oder „Mit GitHub anmelden“. Sie geben kein Passwort ein. Sie gelangen sofort auf die Website.

Das funktioniert dank OAuth. Es ist der globale Sicherheitsstandard. Aber so fing es nicht an. Es hat sich entwickelt, um massive Probleme zu lösen.

Das Problem mit Passwörtern

In der Anfangszeit erstellten Sie für jede Website ein neues Passwort. Dies verursachte drei große Probleme:

  • Die Menschen verwendeten überall dasselbe Passwort. Wenn eine Seite geleakt wurde, war jedes Konto gefährdet.
  • Die Menschen vergaßen Passwörter. Sie verbrachten mehr Zeit damit, auf „Passwort vergessen“ zu klicken, als das Web zu nutzen.
  • Websites sahen Ihr Passwort im Klartext. Wenn eine Seite gehackt wurde, war Ihr Passwort weg.

Die Evolution der Sicherheit

  1. Basic Auth: Sie sendeten bei jeder Anfrage Ihren Benutzernamen und Ihr Passwort. Wenn Sie kein HTTPS verwendeten, konnten Hacker alles sehen.

  2. Session Cookies: Sie meldeten sich einmal an und erhielten eine Session-ID. Das war besser, aber Cookies können durch Angriffe wie XSS oder CSRF gestohlen werden. Zudem konnte eine Website Ihre Anmeldung nicht nutzen, um mit einer anderen Website zu kommunizieren.

  3. API Keys: Sie gaben einer Website einen speziellen Schlüssel. Das war besser, weil Sie Ihr Passwort nicht sendeten. API-Keys haben jedoch oft zu viel Macht. Wenn Sie einer App einen API-Key geben, könnte diese App die Berechtigung haben, Ihre E-Mails zu lesen, Nachrichten zu senden und Ihr Konto zu löschen. Es ist, als würde man einem Hotel-Valet den Autoschlüssel geben, aber dieser Schlüssel öffnet auch das eigene Haus.

Die OAuth-Lösung: Der Valet Key

OAuth hat alles verändert. Anstatt Ihr Passwort zu geben, geben Sie ein „Token“. Stellen Sie es sich wie einen Valet-Schlüssel vor. Ein Valet-Schlüssel erlaubt es einem Fahrer, Ihr Auto zu parken, aber er erlaubt ihm nicht, Ihren Kofferraum zu öffnen oder Zugang zu Ihrem Haus zu erhalten.

So funktioniert OAuth in der Praxis:

  • Sie möchten Canva nutzen und Fotos von Google abrufen.
  • Canva bittet Google um Erlaubnis.
  • Google fragt Sie: „Darf Canva Ihre Fotos ansehen?“
  • Sie sagen: „Ja, aber nur zum Ansehen. Erlauben Sie ihnen nicht, etwas zu löschen.“
  • Google gibt Canva ein spezifisches Token.

Canva sieht niemals Ihr Google-Passwort. Selbst wenn ein Hacker dieses Token stiehlt, kann er nur für kurze Zeit Fotos ansehen. Er kann Ihr Passwort nicht ändern oder Ihr Geld bewegen.

Moderne Sicherheit: PKCE

Mobile Apps und Web-Apps haben eine Schwachstelle. Sie können Geheimnisse nicht gut verbergen. Um dies zu beheben, verwenden wir PKCE (Proof Key for Code Exchange).

Es funktioniert wie ein Reservierungssystem:

  • Die App erstellt einen geheimen Code (den Verifier).
  • Die App sendet eine gehashte Version dieses Codes (die Challenge) an Google.
  • Wenn die App das Token anfordert, sendet sie den ursprünglichen geheimen Code.
  • Google prüft, ob der Code mit der Challenge übereinstimmt.

Wenn sie übereinstimmen, weiß Google, dass es dieselbe App ist. Wenn sie nicht übereinstimmen, blockiert Google die Anfrage. Dies verhindert, dass Hacker Ihren Autorisierungscode stehlen.

Die Roadmap von OAuth

  • 2007 (OAuth 1.0): Sehr komplex und nutzte schwere Mathematik.
  • 2012 (OAuth 2.0): Schneller und einfacher. Es nutzte Token und erforderte HTTPS.
  • 2016 (OAuth 2.0 + PKCE): Fügte Sicherheit für mobile und moderne Web-Apps hinzu.
  • 2023 (OAuth 2.1): Der neue Goldstandard. Er entfernt alte, unsichere Methoden.

Die wichtigste Lektion: Geben Sie Ihr Passwort niemals einer anderen App. Geben Sie ihr stattdessen ein begrenztes Ticket, das abläuft. So behalten Sie die Kontrolle.

Quelle: https://dev.to/gophernment/oauth-elaaaebbprawatisaastr-cchaakrhasphaan-suumaatrthaanolk-16b4