System Design · Modul 6: Schnittstellen & Sicherheit

Lektion 2 von 4Text 14 Min.

Authentifizierung und Autorisierung

Lernziele
  • Authentifizierung und Autorisierung sicher unterscheiden
  • Sitzungen, Tokens, OAuth 2.0 und OpenID Connect einordnen
  • Passkeys und Mehr-Faktor-Anmeldung als moderne Verfahren kennen
  • Berechtigungen mit Rollen und Attributen serverseitig prüfen

Zwei Fragen stellt jedes System bei jeder Anfrage: Wer bist du? Und was darfst du? Die erste Frage beantwortet die Authentifizierung, die zweite die Autorisierung. Beide werden oft verwechselt oder in einen Topf geworfen, doch sie sind unterschiedliche Aufgaben mit unterschiedlichen Fehlern. Fehler in diesem Bereich gehören zu den folgenreichsten überhaupt: Wer sich als jemand anderes ausgeben oder fremde Daten sehen kann, gefährdet Nutzer und Unternehmen gleichermaßen. Diese Lektion zeigt die gängigen Verfahren und die wichtigsten Regeln für einen sicheren Entwurf.

1. Zwei verschiedene Fragen

Definition 2.1
Authentifizierung und Autorisierung
Authentifizierung prüft die Identität: Ist diese Person wirklich, wer sie vorgibt zu sein? Autorisierung prüft die Berechtigung: Darf diese bereits angemeldete Person diese konkrete Aktion an diesem konkreten Objekt ausführen?

Die Unterscheidung ist wichtig, weil die häufigsten Sicherheitslücken in Webanwendungen nicht bei der Anmeldung entstehen, sondern bei der Autorisierung. Ein angemeldeter Nutzer ändert in der Adresse die Buchungsnummer von 901 auf 902 – und sieht die Buchung eines Fremden, weil der Server nur geprüft hat, ob jemand angemeldet ist, nicht aber, ob ihm diese Buchung gehört. Diese Lücke steht seit Jahren an erster Stelle der OWASP-Liste der größten Risiken für APIs.

2. Sitzungen und Tokens

Nach der Anmeldung muss sich das System merken, wer der Nutzer ist. Klassisch geschieht das über eine Sitzung: Der Server speichert die Anmeldung, der Browser erhält ein Cookie mit einer zufälligen Kennung. Das ist einfach, sicher und lässt sich jederzeit widerrufen, verlangt aber einen gemeinsamen Sitzungsspeicher, wenn mehrere Server beteiligt sind. Alternativ erhält der Client ein Token, oft ein signiertes JSON Web Token, das Identität und Ablaufzeit enthält und von jedem Server ohne Rückfrage geprüft werden kann. Tokens eignen sich gut für APIs und Apps, lassen sich aber schwer vorzeitig widerrufen. Deshalb sind Access Tokens kurzlebig, und ein langlebigeres Refresh Token holt bei Bedarf neue.

Abb. 2.1Anmeldung mit Access und Refresh Token
Abb. 2.1: Anmeldung mit Access und Refresh Token. Anmeldung mit Tokens: Der Nutzer meldet sich beim Anmeldedienst an und erhält ein kurzlebiges Access Token und ein Refresh Token. Mit dem Access Token ruft die App die API auf, die Signatur, Ablaufzeit und Rechte prüft und antwortet.
Abb. 2.1Der Anmeldedienst stellt Tokens aus, die API prüft sie bei jeder Anfrage selbst. Kurze Laufzeiten begrenzen den Schaden, falls ein Token gestohlen wird.

3. OAuth 2.0 und OpenID Connect

Viele Anwendungen bauen die Anmeldung nicht selbst, sondern nutzen einen Identitätsanbieter – einen eigenen wie Keycloak, einen Dienst wie Auth0, Clerk oder Supabase Auth, oder die Anmeldung über Google, Apple oder Microsoft. Die Standards dahinter sind OAuth 2.0 für die Vergabe von Zugriffsrechten und OpenID Connect für die Anmeldung. Klicken Sie sich durch den typischen Ablauf „Mit Google anmelden“:

Klick-GrafikAnmelden über einen Identitätsanbieter
NutzerBuchungs-AppIdentitätsanbieterEigene API
Schritt 1/4 · Weiterleiten: Der Nutzer klickt auf „Mit Google anmelden“. Die App leitet zum Identitätsanbieter weiter – das Passwort sieht die App nie.

Ein Identitätsanbieter übernimmt viel schwierige Arbeit: sichere Passwortspeicherung, Mehr-Faktor-Anmeldung, Passkeys, Schutz vor automatisierten Anmeldeversuchen, Passwort-Zurücksetzen. Für die meisten Projekte ist es sicherer und günstiger, auf einen etablierten Anbieter zu setzen, statt all das selbst zu bauen.

4. Moderne Anmeldeverfahren

Passwörter sind die Schwachstelle vieler Systeme, weil sie wiederverwendet, erraten oder abgefischt werden. Mehr-Faktor-Anmeldung ergänzt das Passwort um einen zweiten Nachweis, etwa einen Code aus einer App. Passkeys gehen weiter: Sie ersetzen das Passwort durch ein Schlüsselpaar, das auf dem Gerät liegt und per Fingerabdruck oder Gesichtserkennung freigegeben wird. Passkeys sind gegen Phishing immun, weil sie nur für die echte Domain funktionieren. Wer heute eine Anmeldung entwirft, sollte Passkeys anbieten und für Konten mit weitreichenden Rechten Mehr-Faktor-Anmeldung verpflichtend machen.

5. Autorisierung entwerfen

Für die Autorisierung ist das rollenbasierte Modell am verbreitetsten: Nutzer haben Rollen, Rollen haben Rechte. Probieren Sie es aus:

SimulatorWas darf wer? Rollenbasierte Autorisierung
eigene Buchungen sehen
Kurs buchen
eigene Buchung stornieren
Teilnehmerliste eigener Kurse
Kurs absagen
alle Buchungen sehen
Preise ändern
Rollen vergeben
Als Mitglied: 3 von 8 Aktionen erlaubt. Die Prüfung passiert auf dem Server bei jeder Anfrage – ausgeblendete Buttons allein sind kein Schutz.

Rollen allein reichen oft nicht. „Trainer dürfen Teilnehmerlisten sehen“ ist zu grob – gemeint ist: nur für die eigenen Kurse. Solche Regeln, die Eigenschaften von Nutzer und Objekt verbinden, nennt man attributbasierte Autorisierung. In der Praxis kombiniert man beides: Rollen für grobe Rechte, Prüfungen auf Eigentum und Zugehörigkeit für jedes einzelne Objekt. Diese Prüfungen gehören an eine zentrale Stelle im Code, damit sie nicht in einzelnen Endpunkten vergessen werden.

Prüfen Sie bei jeder Anfrage auf dem Server nicht nur, ob jemand angemeldet ist, sondern ob er genau dieses Objekt sehen oder ändern darf. Die häufigste API-Lücke ist nicht die fehlende Anmeldung, sondern die fehlende Objektprüfung.

6. Regeln für den Entwurf

Einige Grundsätze haben sich bewährt. Autorisierung passiert immer auf dem Server; was die Oberfläche ausblendet, ist Komfort, kein Schutz. Rechte werden nach dem Prinzip der geringsten Berechtigung vergeben: so viel wie nötig, so wenig wie möglich. Tokens haben kurze Laufzeiten und werden nie in Adressen übertragen. Cookies für Sitzungen tragen die Attribute HttpOnly, Secure und SameSite. Anmeldeversuche werden begrenzt und protokolliert. Und Änderungen an Rechten – etwa wenn jemand zur Studioleitung befördert wird – werden nachvollziehbar festgehalten. Wer diese Regeln befolgt, schließt die meisten Lücken, die in der Praxis ausgenutzt werden, und schafft eine Grundlage, auf der auch spätere Funktionen sicher aufbauen können.

7. Typische Fehler vermeiden

Einige Fehler tauchen bei der Umsetzung immer wieder auf. Tokens werden im lokalen Speicher des Browsers abgelegt, wo jedes eingeschleuste Skript sie auslesen kann; sicherer sind HttpOnly-Cookies, auf die Skripte keinen Zugriff haben. JSON Web Tokens werden ohne Prüfung der Signatur oder mit dem Algorithmus „none“ akzeptiert. Passwort-Zurücksetzen-Links sind unbegrenzt gültig oder verraten, ob eine E-Mail-Adresse registriert ist. Die Abmeldung löscht nur das Cookie im Browser, während die Sitzung auf dem Server weiter gültig bleibt. Und Administratorrechte werden über ein Feld im Token vergeben, das der Client selbst verändern könnte, wenn die Signatur nicht geprüft wird.

Die meisten dieser Fehler lassen sich vermeiden, indem man auf bewährte Bibliotheken und Identitätsanbieter setzt, statt Kryptografie und Anmeldeabläufe selbst zu programmieren. Eigene Arbeit fließt dann in das, was nur das eigene System wissen kann: die Regeln, wer welche Objekte sehen und ändern darf. Diese Regeln sollten schriftlich festgehalten, in Tests abgedeckt und bei jedem neuen Endpunkt geprüft werden. Ein einfacher, wirksamer Test ist, jede Anfrage einmal mit dem Konto eines anderen Nutzers auszuführen: Liefert der Server dann die fremden Daten, ist eine Lücke gefunden, bevor ein Angreifer sie findet.

Auch die Nutzerfreundlichkeit gehört zur Sicherheit. Wenn die Anmeldung zu umständlich ist, suchen Nutzer Umwege, etwa geteilte Konten oder notierte Passwörter. Passkeys verbinden hier Sicherheit und Komfort: Die Anmeldung dauert eine Sekunde und ist trotzdem sicherer als jedes Passwort. Sitzungen dürfen auf vertrauenswürdigen Geräten länger dauern, während sensible Aktionen wie das Ändern der E-Mail-Adresse oder der Zahlungsdaten eine erneute Bestätigung verlangen.

Quellen und weiterführende Literatur
  1. [1]IETF RFC 6749 (2012): The OAuth 2.0 Authorization Framework; RFC 9700 (2025): Best Current Practice for OAuth 2.0 Security.
  2. [2]OpenID Foundation (2014): OpenID Connect Core 1.0.
  3. [3]OWASP Foundation (2023): API Security Top 10 – API1: Broken Object Level Authorization.
  4. [4]W3C (2021): Web Authentication (WebAuthn) Level 2; FIDO Alliance (2026): Passkeys.

Stand: September 2026. Kursmaterial der Klarwerk Akademie. Zahlen zu Latenzen und Kosten sind Größenordnungen zur Orientierung, keine Messwerte.

Abschlussquiz

Drei Fragen – dann ist die Lektion geschafft.

Frage 1 von 3

Ein Nutzer ändert die Buchungsnummer in der Adresse und sieht fremde Daten. Was fehlt?