Übungsaufgaben zu Authentifizierung und Autorisierung: Single Sign-on, OAuth2, Passwort-Reset und Mehr-Faktor-Anmeldung

https://bildung.social/@oerinformatik/

https://oer-informatik.de/authentifizierung-uebungsaufgaben

Authentifizierung, Autorisierung, Single Sign-on, OAuth2, OpenID Connect, Passwort-Reset, Mehr-Faktor-Authentifizierung, Passkeys, Übungsaufgaben, Prüfungsvorbereitung

tl/dr; (Bearbeitungszeit insgesamt 71 min, mehrere Aufgaben): Zwei Übungsaufgaben: Die Anmeldung einer Mitfahr-App über das Schulkonto mit Single Sign-on, OAuth2 und OpenID Connect samt Rechteprüfung, und ein sicheres „Passwort vergessen“ mit Mehr-Faktor-Anmeldung und Passkeys für eine Freizeit-App. Alle Lösungen sind ausgeblendet und mit Punkteverteilung versehen [AI-Assisted]. (Zuletzt geändert am 28.10.2026)

Diese Übungsaufgaben gehören zum Artikel Authentifizierung und Autorisierung: Mehr-Faktor, Passwort-Reset, Single Sign-on und OAuth2.

Hinweise zur Bearbeitung: Von FIA wird erwartet, dass ihnen Aufgaben auf Profilkompetenz-Ebene (Aufgabe 3.1 und Aufgabe 3.2) keine Probleme bereiten. Achte auf den Operator: „Nennen“ verlangt nur Begriffe, „Beschreiben“ einen zusammenhängenden Sachverhalt, „Erläutern“ zusätzlich Gründe oder ein Beispiel, „Zuordnen“ eine eindeutige Zuordnung, „Stellung nehmen“ eine begründete eigene Position. Schreib Deine Antwort zuerst vollständig auf, bevor Du die Beispiellösung aufklappst. Andere fachlich richtige Antworten sind ebenfalls richtig.

Du möchtest eigene Aufgaben zum Üben von einem KI-Sprachmodell generieren lassen?

Kopiere den Text in ein KI-Sprachmodell Deiner Wahl und passe Kompetenzstufe, Anzahl, Bearbeitungszeit und Szenario bei Bedarf an. Wie die Aufgaben aufgebaut sind, beschreibt der Artikel Wie sind die Aufgaben aufgebaut?. Prüfe die Ergebnisse mit dem Lehrartikel: KI-Sprachmodelle machen Fehler.

Erstelle neue Übungsaufgaben zum Thema „Authentifizierung und
Autorisierung: Single Sign-on, OAuth2, Passwort-Reset und Mehr-Faktor-
Anmeldung“.

Bauplan: Halte Dich an Aufbau, Kompetenzstufen, Operatoren,
Anforderungsbereiche, Punkte und Zeitschätzung, die im Artikel
https://oer-informatik.de/aufgaben-aufbau beschrieben sind.

Fachliche Grundlage:
- https://oer-informatik.de/authentifizierung
- Stilbeispiel: https://oer-informatik.de/authentifizierung-uebungsaufgaben

Die Aufgaben sollen Inhalte zu diesen Schlagwörtern abdecken:
- Authentifizierung
- Autorisierung
- Single Sign-on
- OAuth2
- OpenID Connect
- Passwort-Reset
- Mehr-Faktor-Authentifizierung
- Passkeys

Kompetenzstufe: Profilkompetenz (alternativ: Basiskompetenz, Kernkompetenz, Expertise)
Anzahl: 1 Aufgabe mit Teilaufgaben
Bearbeitungszeit in Minuten ca.: <5 bis 30 min>
Szenario: eines der Szenarien aus dem Bauplan

Vorgehen:
1. Lies zuerst die verlinkten Artikel. Kannst Du keine Webseiten
   abrufen, sag mir das, statt zu raten.
2. Steht bei einer Angabe noch ein Platzhalter in <…>, frag mich
   zuerst danach. Richte Punkte und Zahl der Teilaufgaben nach der
   Bearbeitungszeit (ca. 0,9 min je Punkt).
3. Gib je Aufgabe Titel mit Kompetenzstufe, Ausgangssituation und
   Teilaufgaben mit Operator und Punktzahl aus, dazu die geschätzte
   Bearbeitungszeit.
4. Gib die Beispiellösungen mit Punkteverteilung erst aus, wenn ich
   danach frage.

Aufgabe 3.1: Mit dem Schulkonto in die Mitfahr-App (Profilkompetenz)

(ca. 42 min Bearbeitungszeit)

Du bist Auszubildende*r im FIA-Projektteam des Ratz und Rübe Berufskollegs (RRB) in Bielefeld und entwickelst zusammen mit Jonas Wolff und Oksana Melnyk die Mitfahr-App RatzFahrt. Auszubildende aus dem Umland bieten darin Fahrten zu den Berufsschultagen an oder suchen Mitfahrgelegenheiten. Projektleiter Thomas Becker hat festgelegt: Die Anmeldung erfolgt nur über das Schulkonto.

Die Schul-IT OWL (Ansprechpartnerin: Svenja Krämer) betreibt dafür zwei Dienste:

  • den Anmeldedienst https://login.schul-it-owl.example für die zentrale Anmeldung mit dem Schulkonto (OpenID Connect auf Basis von OAuth2),

  • die Schuldaten-API https://api.schul-it-owl.example/v1, die angemeldeten Anwendungen ausgewählte Daten des Schulkontos liefert, z. B. Klasse und Schultage.

a) Erläutere den Unterschied zwischen Authentifizierung und Autorisierung jeweils an einem Beispiel aus RatzFahrt. (4 Punkte)

  • Authentifizierung (2 P): Prüfung, ob jemand wirklich die Person ist, für die sie sich ausgibt (Nachweis der Identität). Beispiel: Aylin Kaya meldet sich mit ihrem Schulkonto und Passwort beim Anmeldedienst an; der Anmeldedienst prüft die Angaben, und RatzFahrt weiß danach, dass wirklich Aylin angemeldet ist.

  • Autorisierung (2 P): Festlegung bzw. Prüfung, was eine bereits authentifizierte Person tun darf (Rechte). Beispiel: Aylin darf eine Mitfahrt anfragen und ihre eigenen Gesuche bearbeiten, aber nicht die Angebote anderer ändern; nur Andrea Wolf (Rolle Admin) darf die Einwilligung der Erziehungsberechtigten eintragen.

Je Begriff 1 P für die Erklärung und 1 P für ein passendes Beispiel. Wichtig ist die Reihenfolge: Erst die Identität prüfen, dann die Rechte.

b) Thomas Becker fragt in der Projektbesprechung, ob es nicht einfacher wäre, in RatzFahrt eigene Konten mit eigenem Passwort anzulegen. Du sollst die Entscheidung für das Single Sign-on (SSO) über das Schulkonto begründen.

ba) Erläutere unter Sicherheitsaspekten zwei Vorteile und zwei Nachteile des Single Sign-on über das Schulkonto. (8 Punkte)

Je Vorteil bzw. Nachteil 2 P (1 P für die Nennung, 1 P für die Erläuterung mit Bezug zur Sicherheit). Mögliche Antworten:

Vorteile:

  • Kein weiteres Passwort: Die Auszubildenden müssen sich kein zusätzliches Passwort merken. Dadurch sinkt die Gefahr, dass sie ein schwaches Passwort wählen, es aufschreiben oder dasselbe Passwort wie bei anderen Diensten verwenden.

  • Keine Passwörter in RatzFahrt: RatzFahrt speichert selbst keine Passwörter oder Passwort-Hashwerte. Ein Einbruch in den RatzFahrt-Server liefert also keine Zugangsdaten; auch ein eigenes „Passwort vergessen“ entfällt.

  • Zentrale Verwaltung und schnelle Reaktion: Konten und Sicherheitsregeln (Passwortregeln, Mehr-Faktor-Anmeldung, Sperren) werden an einer Stelle bei der Schul-IT OWL verwaltet. Verlässt jemand die Schule oder wird ein Konto missbraucht, wird es einmal zentral gesperrt und ist sofort auch in RatzFahrt gesperrt.

  • Geprüfte Identität: Nur Personen mit einem Schulkonto, also Schüler*innen und Beschäftigte des RRB, können sich anmelden; Fremde können sich keine Konten anlegen.

Nachteile:

  • Ein Zugang öffnet alles: Wird das Passwort eines Schulkontos erbeutet (z. B. durch Phishing), haben Angreifende Zugriff auf alle angeschlossenen Anwendungen gleichzeitig, also auch auf RatzFahrt mit Fahrtzeiten und Haltepunkten.

  • Abhängigkeit von der Verfügbarkeit: Fällt der Anmeldedienst aus oder ist er gestört, kann sich niemand mehr bei RatzFahrt anmelden, auch wenn RatzFahrt selbst einwandfrei läuft (Single Point of Failure).

  • Abhängigkeit vom Betreiber: RatzFahrt hat keinen Einfluss darauf, wie sicher der Anmeldedienst betrieben wird, und muss der Schul-IT OWL vertrauen; Fehler oder Sicherheitslücken dort betreffen auch RatzFahrt.

bb) Schlage zu einem der beiden Nachteile aus ba) eine Gegenmaßnahme vor. (2 Punkte)

Beispiele (2 P, wenn die Maßnahme zum genannten Nachteil passt):

  • gegen „ein Zugang öffnet alles“: Mehr-Faktor-Anmeldung am Anmeldedienst (z. B. Authenticator-App oder Passkey), damit ein erbeutetes Passwort allein nicht reicht; zusätzlich Schulung gegen Phishing und Erkennen auffälliger Anmeldungen.

  • gegen die Abhängigkeit von der Verfügbarkeit: redundanter Betrieb des Anmeldedienstes (z. B. zweiter Server im Rechenzentrum der Schul-IT OWL), Überwachung und eine Vereinbarung über die Verfügbarkeit (SLA). Bereits angemeldete Nutzende bleiben bei einem kurzen Ausfall angemeldet, weil RatzFahrt eine eigene Sitzung führt.

c) Svenja Krämer hat Dir den Ablauf der Anmeldung als UML-Sequenzdiagramm geschickt. Einige Beschriftungen fehlen noch.

Sequenzdiagramm der Anmeldung bei RatzFahrt über den Anmeldedienst der Schul-IT OWL mit sechs Lücken (mit KI erstellt)

ca) Ordne die vier Rollen von OAuth2 – Resource Owner, Client, Authorization Server und Resource Server – den Beteiligten im Diagramm zu. (4 Punkte)

Rollen von OAuth2 im Ablauf der RatzFahrt-Anmeldung
Rolle Beteiligte im Diagramm
Resource Owner Aylin Kaya (die Auszubildende, der die Daten ihres Schulkontos gehören und die die Freigabe erteilt)
Client RatzFahrt-Server (die Anwendung, die auf die Daten zugreifen will)
Authorization Server Anmeldedienst der Schul-IT OWL
Resource Server Schuldaten-API der Schul-IT OWL

Je richtiger Zuordnung 1 P. Der Browser hat keine eigene OAuth2-Rolle; er leitet nur weiter (User Agent). Typischer Fehler: Aylin als „Client“ zu bezeichnen – der Client ist immer die Anwendung.

cb) Gib für jede Lücke (1) bis (6) an, welche Angabe dort übertragen wird. Gib außerdem an, ob die jeweilige Nachricht über den Browser läuft (Front-Channel) oder direkt zwischen zwei Servern (Back-Channel). (6 Punkte)

Lösung der Lücken im Sequenzdiagramm
Lücke übertragene Angabe Weg Begründung
(1) Authorization Code Front-Channel Der Anmeldedienst schickt den Browser nach Anmeldung und Freigabe mit einem kurzlebigen Code zu RatzFahrt zurück.
(2) Authorization Code Front-Channel Der Browser ruft die Rücksprungadresse von RatzFahrt auf und reicht den Code dabei weiter.
(3) Authorization Code Back-Channel Der RatzFahrt-Server löst den Code selbst beim Anmeldedienst ein und weist sich mit client_id und client_secret aus.
(4) Access Token Back-Channel Der Anmeldedienst antwortet direkt dem RatzFahrt-Server (bei OpenID Connect zusätzlich mit dem ID-Token).
(5) Access Token Back-Channel Der RatzFahrt-Server legt das Token im Authorization-Header der API-Anfrage vor.
(6) geschützte Daten (Protected Resource), hier Klasse und Bildungsgang Back-Channel Die Schuldaten-API liefert nur, was der Scope des Tokens erlaubt.

Je Lücke 0,5 P für die Angabe und 0,5 P für den Weg. Auffällig: Nur der Code geht über den Browser, Token und Daten bleiben zwischen den Servern. Ein Passwort taucht in keiner Lücke auf: Aylin gibt es nur beim Anmeldedienst ein, RatzFahrt erfährt es nie.

Vervollständigtes Sequenzdiagramm der Anmeldung bei RatzFahrt (mit KI erstellt)

cc) Erläutere, warum der RatzFahrt-Server zunächst nur einen Authorization Code erhält und nicht sofort das Access Token. (3 Punkte)

  • Die Rückleitung zu RatzFahrt läuft über den Browser (Weiterleitung mit Daten in der Adresse). Was durch den Browser geht, kann im Verlauf, in Server-Logs, über den Referer oder durch fremde Skripte bzw. Browsererweiterungen in falsche Hände geraten. (1 P)

  • Deshalb wird dort nur der Authorization Code übergeben: Er ist kurzlebig, nur einmal verwendbar und allein wertlos. (1 P)

  • Das eigentliche Access Token erhält RatzFahrt erst, wenn es den Code direkt (Server zu Server, per HTTPS) beim Anmeldedienst einlöst und sich dabei selbst mit client_id und client_secret (bzw. PKCE) ausweist. Wer nur den Code abfängt, kann ihn ohne das Client-Geheimnis nicht in ein Token umtauschen. (1 P)

d) Jonas Wolff gefällt die Weiterleitung zum Anmeldedienst nicht: „Das sieht gar nicht nach RatzFahrt aus. Wir bauen lieber ein eigenes Anmeldeformular in unserem Design, fragen dort Schulkonto und Passwort ab und schicken beides an den Anmeldedienst weiter. Das Ergebnis ist doch dasselbe.“

Nimm Stellung zu Jonas’ Vorschlag. (4 Punkte)

Der Vorschlag ist abzulehnen (1 P für eine klare, begründete Position, 3 P für drei passende Gründe), z. B.:

  • RatzFahrt würde das Passwort kennen. Genau das soll OAuth2 verhindern. Das Schulkonto-Passwort öffnet auch E-Mail, Lernplattform und andere Dienste; ein Fehler oder Einbruch bei RatzFahrt (z. B. Passwort im Log) gefährdet dann alle diese Dienste.

  • Phishing wird gefördert. Wenn Auszubildende es gewohnt sind, ihr Schulkonto-Passwort in fremde Formulare einzugeben, erkennen sie gefälschte Anmeldeseiten schlechter. Die Anmeldung soll immer auf der bekannten Adresse des Anmeldedienstes stattfinden.

  • Mehr-Faktor-Anmeldung und Freigabe gehen verloren. Ein zweiter Faktor, die Freigabe der Daten (Scopes) und spätere Verbesserungen des Anmeldedienstes (z. B. Passkeys) funktionieren nur auf der Seite des Anmeldedienstes.

  • Das Verfahren gilt als veraltet. Die Weitergabe von Benutzername und Passwort durch die App (Resource Owner Password Credentials Grant) wird nach RFC 9700 nicht mehr empfohlen und ist im Entwurf von OAuth 2.1 nicht mehr enthalten; der Anmeldedienst der Schul-IT OWL würde es vermutlich gar nicht zulassen.

Für das Design-Anliegen gibt es eine bessere Lösung: Der Anmeldedienst kann den Namen und das Logo von RatzFahrt anzeigen, und die Startseite von RatzFahrt erklärt mit einem Satz, dass man zur Anmeldung zur Schulseite weitergeleitet wird.

e) Im Projekt gelten außerdem diese Festlegungen: Erinnerungen an Fahrten werden per E-Mail an das Schulkonto verschickt, Treffpunkte sind nur öffentliche Haltepunkte (Wohnadressen werden nicht verwendet), und die bisherige Tabelle nutzer von RatzFahrt speichert ein Geburtsdatum. Die Schuldaten-API bietet folgende Scopes an:

Angebotene Scopes der Schuldaten-API
Scope Daten
openid eindeutige Kennung des Schulkontos (Pflicht für die Anmeldung)
profil Vor- und Nachname
email Schul-E-Mail-Adresse
klasse Klasse und Bildungsgang
schultage Wochentage mit Berufsschulunterricht
geburtsdatum vollständiges Geburtsdatum
volljaehrig nur true oder false
adresse Wohnanschrift
noten Zeugnisnoten

ea) Erläutere, was ein Scope ist, und wähle begründet die Scopes aus, die RatzFahrt anfordern sollte. Andrea Wolf, Datenschutzbeauftragte der Schule, besteht auf Datenminimierung. (4 Punkte)

Scope (1 P): Ein Scope legt fest, auf welche Daten bzw. für welche Aktionen ein Access Token berechtigt. Der Client fordert die Scopes in der Autorisierungsanfrage an, die Person sieht sie bei der Freigabe, und der Resource Server liefert nur Daten, die vom Scope des Tokens gedeckt sind.

Auswahl (3 P, Abzug je fehlendem nötigen oder überflüssigen Scope):

  • anfordern: openid (Anmeldung, Zuordnung zum Konto), profil (Name für bestätigte Mitfahrende und für die Verwaltung), email (Erinnerungen werden laut Projektfestlegung per E-Mail an das Schulkonto verschickt), klasse und schultage (passende Fahrten zu den Berufsschultagen finden), volljaehrig (Minderjährige brauchen die Einwilligung der Erziehungsberechtigten).

  • nicht anfordern: geburtsdatum – für die Regel reicht die Information „volljährig ja/nein“; das vollständige Geburtsdatum wäre mehr als nötig. adresse – Treffpunkte sind öffentliche Haltepunkte, Wohnadressen werden ausdrücklich nicht verwendet. noten – haben mit Fahrgemeinschaften nichts zu tun.

Hinweis: Die bisherige Tabelle nutzer speichert ein Geburtsdatum. Wer geburtsdatum mit Verweis darauf wählt, erhält die Punkte nur, wenn erkannt wird, dass volljaehrig datensparsamer ist. Da sich die Volljährigkeit im Laufe des Schuljahres ändert, wird volljaehrig bei jeder Anmeldung neu abgefragt.

eb) Im Diagramm erhält der RatzFahrt-Server neben dem Access Token auch ein ID-Token. Erläutere, wofür RatzFahrt das ID-Token und wofür es das Access Token verwendet. (3 Punkte)

  • ID-Token (1,5 P): gehört zu OpenID Connect und dient der Authentifizierung. Es ist ein vom Anmeldedienst signiertes JSON Web Token mit Angaben zur angemeldeten Person (z. B. Kennung sub, Name), zum Aussteller und zur Empfänger-App. RatzFahrt prüft Signatur, Aussteller, Empfänger und Ablaufzeit, weiß dann, wer sich angemeldet hat, ordnet die Person ihrem Datensatz in nutzer zu und legt eine eigene Sitzung an.

  • Access Token (1,5 P): gehört zu OAuth2 und dient der Autorisierung gegenüber der Schuldaten-API. RatzFahrt schickt es bei jedem Aufruf im Header Authorization: Bearer … mit; es berechtigt nur für die freigegebenen Scopes (z. B. Klasse, Schultage) und ist kurz gültig. RatzFahrt wertet es nicht selbst aus.

f) In RatzFahrt gibt es die Rollen Schueler, Lehrkraft und Admin. Andrea Wolf hat außerdem festgelegt: Fahrzeugdaten sehen nur Mitfahrende mit bestätigter Buchung, und Minderjährige ohne Einwilligung der Erziehungsberechtigten bleiben gesperrt, bis die Einwilligung eingetragen ist. Ein Auszug aus dem Datenbestand:

Auszug aus den Angeboten und Buchungen in RatzFahrt
Angebot Fahrer*in Buchungen
1 (Gütersloh, zur Schule) Ben Richter Lukas Hofmann: bestätigt; Lina Hartwig: abgelehnt
2 (Gütersloh, nach Hause) Ben Richter –
4 (Herford, zur Schule) Marie Schulz Aylin Kaya: angefragt
5 (Bad Salzuflen, zur Schule) Niklas Fischer –

fa) Entscheide für jede der folgenden Anfragen, ob der RatzFahrt-Server sie ausführen darf, und begründe Deine Entscheidung kurz. (6 Punkte)

Zu prüfende Anfragen an den RatzFahrt-Server
Nr. Anfrage erlaubt? Begründung
1 Ben Richter ändert die Abfahrtszeit von Angebot 2.
2 Ben Richter schickt PUT /v1/angebote/5 mit einer neuen Abfahrtszeit. In der Oberfläche ist der Button „Bearbeiten“ bei fremden Angeboten ausgeblendet.
3 Lukas Hofmann ruft Farbe und Typ des Fahrzeugs von Angebot 1 ab.
4 Aylin Kaya ruft Farbe und Typ des Fahrzeugs von Angebot 4 ab.
5 Lina Hartwig (17 Jahre, ohne Einwilligung) stellt eine Mitfahranfrage zu Angebot 4.
6 Andrea Wolf (Rolle Admin) trägt nach Eingang des unterschriebenen Formulars die Einwilligung für Lina Hartwig ein.
Lösung der Rechteprüfung
Nr. erlaubt? Begründung
1 ja Ben ist Fahrer von Angebot 2; die eigenen Angebote darf man bearbeiten.
2 nein Angebot 5 gehört Niklas Fischer. Dass der Button ausgeblendet ist, schützt nicht: Der Server muss selbst prüfen, ob die angemeldete Person Fahrer*in des Angebots ist, und die Anfrage ablehnen.
3 ja Lukas hat für Angebot 1 eine bestätigte Buchung.
4 nein Aylins Anfrage zu Angebot 4 ist noch nicht bestätigt; Fahrzeugdaten gibt es erst nach Bestätigung.
5 nein Lina ist minderjährig und ohne Einwilligung; ihr Konto ist bis zur Eintragung gesperrt.
6 ja Das Eintragen der Einwilligung ist Aufgabe der Administration (Rolle Admin).

Je Zeile 1 P (0,5 P für die Entscheidung, 0,5 P für die Begründung). Zu Zeile 5: Laut Datenbestand hat Lina früher bereits eine Anfrage zu Angebot 1 gestellt, die abgelehnt wurde. Das hätte der Server gar nicht annehmen dürfen – ein Hinweis darauf, dass die Sperre bisher nur in der Oberfläche geprüft wurde.

fb) Beschreibe, wie der RatzFahrt-Server bei Anfrage 2 vorgehen muss, und gib den passenden HTTP-Statuscode an. (2 Punkte)

  • Der Server ermittelt die angemeldete Person aus der Sitzung bzw. dem Token (nicht aus einem Feld der Anfrage), liest Angebot 5 aus der Datenbank und vergleicht fahrer_id mit der Kennung der angemeldeten Person. Weil sie nicht übereinstimmen (und Ben keine Rolle mit Sonderrechten hat), wird die Änderung nicht ausgeführt und der Versuch protokolliert. (1 P)

  • Statuscode 403 Forbidden: Ben ist angemeldet (also nicht 401 Unauthorized), aber nicht berechtigt. (1 P)

Grundsatz: Rechte werden immer serverseitig geprüft, alles nicht ausdrücklich Erlaubte ist verboten (Deny by Default).

  1. 4 Punkte · b) 10 Punkte (8 + 2) · c) 13 Punkte (4 + 6 + 3) · d) 4 Punkte · e) 7 Punkte (4 + 3) · f) 8 Punkte (6 + 2) · Summe 46 Punkte

Aufgabe 3.2: „Passwort vergessen?“ in einer Freizeit-App (Profilkompetenz)

(ca. 29 min Bearbeitungszeit)

Du bist Auszubildende*r in der Entwicklung der Let’s Meet GmbH in Bielefeld. Die App „Let’s Meet“ bringt Menschen ab 16 Jahren für gemeinsame Freizeitaktivitäten zusammen; Nutzende melden sich mit E-Mail-Adresse und Passwort an, die Passwörter sind als bcrypt-Hashwert gespeichert. Bisher setzt das Support-Team vergessene Passwörter von Hand zurück und schickt ein neues Passwort per E-Mail. Das kostet viel Zeit, deshalb soll eine Funktion „Passwort vergessen“ entstehen. Entwicklungsleiter Yusuf Demir hat Dich und Deinen Mit-Azubi Jonas Weber damit beauftragt.

a) Jonas hat einen ersten Entwurf programmiert (Ausschnitt, Java):

public String passwortVergessen(String email, HttpServletRequest anfrage) {
    Benutzer b = benutzerRepository.findeNachEmail(email);
    if (b == null) {
        return "Zu dieser E-Mail-Adresse gibt es kein Konto.";
    }
    String token = b.getId() + "-" + System.currentTimeMillis();
    resetRepository.speichere(b.getId(), token);
    String link = "https://" + anfrage.getHeader("Host")
                + "/passwort-neu?token=" + token;
    mailDienst.sende(b.getEmail(), "Passwort zurücksetzen", "Klicke hier: " + link);
    return "Wir haben Dir einen Link geschickt.";
}

public void passwortSetzen(String token, String neuesPasswort) {
    int id = resetRepository.findeBenutzerId(token);
    benutzerRepository.setzePasswortHash(id, BCrypt.hashpw(neuesPasswort, BCrypt.gensalt(12)));
    sitzungsDienst.meldeAn(id);
}

Analysiere den Entwurf. Beschreibe vier Mängel und gib jeweils eine Verbesserung an. (8 Punkte)

Je Mangel 1 P, je passende Verbesserung 1 P. Mögliche Mängel:

Mängel und Verbesserungen im Entwurf von Jonas Weber
Mangel Verbesserung
Kontoauskunft: Die Meldung „gibt es kein Konto“ verrät, welche E-Mail-Adressen registriert sind (User Enumeration). Bei einer App für Freizeitkontakte ist schon die Mitgliedschaft eine schützenswerte Information. Immer dieselbe Antwort: „Falls ein Konto zu dieser Adresse existiert, haben wir Dir eine E-Mail geschickt.“ Möglichst auch gleiche Antwortzeit.
Erratbares Token: Benutzernummer und Zeitstempel lassen sich vorhersagen bzw. durchprobieren; Angreifende können für fremde Konten gültige Links berechnen. Token mit einem kryptografisch sicheren Zufallsgenerator erzeugen (z. B. SecureRandom, mindestens 128 Bit, Base64-URL-kodiert).
Token im Klartext gespeichert: Wer Zugriff auf die Datenbank bekommt, kann alle offenen Reset-Links benutzen. Nur einen Hashwert des Tokens speichern (z. B. SHA-256) und beim Aufruf den Hashwert des übergebenen Tokens vergleichen.
Keine Ablaufzeit, nicht einmalig: Das Token wird nie gelöscht und gilt unbegrenzt und mehrfach. Ablaufzeit speichern (z. B. 30 Minuten) und prüfen; Token nach Benutzung und bei neuer Anforderung löschen bzw. ungültig machen.
Link aus dem Host-Header: Angreifende können eine Anfrage mit gefälschtem Host schicken; die echte Mail an das Opfer enthält dann einen Link auf ihre eigene Domain und liefert ihnen das Token (Host Header Injection). Basisadresse fest konfigurieren (https://app.letsmeet.example) und nicht aus der Anfrage übernehmen.
Keine Prüfung in passwortSetzen: Ungültige oder abgelaufene Tokens werden nicht abgefangen, das neue Passwort wird nicht geprüft. Token prüfen (vorhanden, nicht abgelaufen, nicht benutzt), sonst Fehlermeldung; Mindestlänge und Abgleich mit Listen bekannter Passwörter.
Automatische Anmeldung, alte Sitzungen bleiben: Wer den Link abgefangen hat, ist sofort angemeldet; eine Angreiferin, die schon angemeldet war, bleibt es. Keine automatische Anmeldung; nach dem Reset alle bestehenden Sitzungen beenden und eine Benachrichtigung „Dein Passwort wurde geändert“ senden.
Keine Begrenzung: Beliebig viele Reset-Mails je Adresse. Anfragen je Konto und Zeitraum begrenzen, ggf. Captcha.

b) Kurz nach dem Start der Funktion meldet sich eine Nutzerin beim Support: Ihr Konto wurde übernommen. Sie hatte sich vor Jahren mit einer Adresse bei einem kleinen Mailanbieter registriert und diese Adresse später nicht mehr genutzt. Der Anbieter hat die Adresse nach zwei Jahren ohne Anmeldung gelöscht und an jemand anderen neu vergeben. Diese Person hat bei Let’s Meet „Passwort vergessen“ angeklickt und über den Link ein eigenes Passwort gesetzt.

ba) Leite aus dem Vorfall ab, von welcher Annahme ein Zurücksetzen allein per E-Mail-Link ausgeht, und begründe, warum auch ein Entwurf ohne die Mängel aus a) diese Übernahme nicht verhindert hätte. (2 Punkte)

  • Annahme (1 P): Wer das Postfach der hinterlegten Adresse lesen kann, ist die Person, der das Konto gehört. Das Postfach ist damit der einzige Nachweis der Identität.

  • Begründung (1 P): Der Link kann zufällig, kurz gültig und einmalig sein – er landet trotzdem im richtigen Postfach, das inzwischen nur einer anderen Person gehört. Gegen eine Übernahme des Postfachs (neu vergebene Adresse, erbeutetes Mailpasswort, Mitlesen im Haushalt) helfen Verbesserungen am Token nicht. Dafür braucht es einen zweiten Nachweis, der nicht vom Postfach abhängt.

bb) Yusuf Demir stehen drei Erweiterungen zur Auswahl:

  1. Vor dem Setzen des neuen Passworts wird ein Bestätigungscode per SMS an die hinterlegte Mobilnummer geschickt.

  2. Wer bereits einen zweiten Faktor eingerichtet hat (Authenticator-App oder Passkey), muss ihn beim Zurücksetzen zusätzlich verwenden.

  3. Bei der Registrierung bekommen alle Nutzenden zehn Wiederherstellungscodes zum Ausdrucken; einer davon muss beim Zurücksetzen eingegeben werden.

Außerdem hat er nachgesehen, welche aktiven Konten keine Mobilnummer haben:

SELECT b.benutzer_id, b.vorname, b.nachname
FROM benutzer b
WHERE b.status = 'aktiv'
  AND NOT EXISTS (SELECT * FROM telefon t
                  WHERE t.benutzer_id = b.benutzer_id AND t.typ = 'mobil')
ORDER BY b.benutzer_id;
Ergebnis der Abfrage (von insgesamt 12 aktiven Konten im Testdatenbestand)
benutzer_id vorname nachname
1 Sabine Hoffmann
4 Tobias Lange
6 Petra Novak
10 Rainer Krause

Bewerte die drei Erweiterungen, auch mithilfe des Abfrageergebnisses, und empfiehl eine Lösung für Let’s Meet. (5 Punkte)

Je Erweiterung 1 P für eine passende Bewertung, 2 P für eine schlüssig begründete Empfehlung.

  • SMS-Code: unabhängig vom Postfach und für viele bequem. Aber vier von zwölf aktiven Konten im Testbestand (ein Drittel) haben keine Mobilnummer und kämen nicht weiter. SMS sind nicht Ende-zu-Ende-verschlüsselt, die Nummer kann per SIM-Swapping übernommen werden, und Let’s Meet müsste zusätzliche Telefonnummern speichern (Datenminimierung).

  • Vorhandener zweiter Faktor: der stärkste Schutz, ein Passkey ist sogar phishingresistent. Er wirkt aber nur für Nutzende, die ihn eingerichtet haben, und hilft nicht, wenn gerade das Smartphone verloren gegangen ist.

  • Wiederherstellungscodes: brauchen weder Telefonnummer noch Smartphone und funktionieren für alle Konten. Viele bewahren die Codes aber nicht auf; liegen sie neben dem Passwort, schützen sie wenig.

  • Empfehlung, z. B. gestuft: Wer einen zweiten Faktor hat, muss ihn verwenden; alle anderen bestätigen mit einem Wiederherstellungscode; ein SMS-Code wird nur dort angeboten, wo eine Nummer freiwillig hinterlegt ist. Als letzter Weg prüft der Support die Identität (z. B. über den bei der Verifizierung hinterlegten Altersnachweis), ohne das Passwort zu erfahren. Zusätzlich: Benachrichtigung bei jeder Passwortänderung und Abmelden aller Sitzungen.

Andere begründete Empfehlungen sind ebenfalls richtig.

c) Für die Konten der Moderierenden, die Meldungen bearbeiten und Konten sperren können, führt Yusuf Demir eine Mehr-Faktor-Authentifizierung ein.

ca) Erkläre das Prinzip der Mehr-Faktor-Authentifizierung und begründe, warum Passwort plus Sicherheitsfrage keine Zwei-Faktor-Authentifizierung ist. (2 Punkte)

  • Bei der Mehr-Faktor-Authentifizierung weist sich eine Person mit mindestens zwei voneinander unabhängigen Merkmalen aus verschiedenen Faktoren aus (Wissen, Besitz, Inhärenz). Wer nur ein Merkmal erbeutet, z. B. das Passwort, kommt nicht ins Konto. (1 P)

  • Passwort und Sicherheitsfrage gehören beide zum Faktor Wissen. Sie können auf demselben Weg erbeutet werden (z. B. auf derselben Phishing-Seite), sind also nicht unabhängig. (1 P)

cb) Ordne die folgenden Merkmale jeweils dem Faktor Wissen, Besitz oder Inhärenz zu. (4 Punkte)

Zuzuordnende Authentifizierungsmerkmale
Nr. Merkmal Faktor
1 Passwort des Let’s-Meet-Kontos
2 sechsstelliger Code aus einer Authenticator-App
3 Fingerabdruck zum Entsperren des Smartphones
4 FIDO2-Sicherheitsschlüssel am Schlüsselbund
5 Antwort auf die Frage „Wie hieß Deine erste Schule?“
6 Gesichtserkennung am Laptop
7 per SMS an die hinterlegte Nummer gesendeter Code
8 PIN zum Entsperren des Laptops
Lösung der Zuordnung
Nr. Merkmal Faktor
1 Passwort Wissen
2 Code aus Authenticator-App Besitz (das Smartphone mit dem eingerichteten Geheimnis)
3 Fingerabdruck Inhärenz
4 FIDO2-Sicherheitsschlüssel Besitz
5 Antwort auf Sicherheitsfrage Wissen
6 Gesichtserkennung Inhärenz
7 SMS-Code Besitz (Mobiltelefon bzw. SIM-Karte)
8 PIN Wissen

Je richtiger Zuordnung 0,5 P. Typischer Fehler: Den Code aus App oder SMS als „Wissen“ einzuordnen – man kennt ihn nur, weil man das Gerät besitzt.

cc) Für die Moderierenden stehen drei Verfahren zur Wahl. Ergänze die fehlenden Angaben in der Tabelle. (6 Punkte)

Vergleich der Verfahren für die Moderations-Konten
Passwort + SMS-Code Passwort + Authenticator-App Passkey auf dem Smartphone
beteiligte Faktoren Wissen + Besitz
Vorteil funktioniert ohne Mobilfunknetz; das Geheimnis liegt nur auf Smartphone und Server
Sicherheitsrisiko Geht das Smartphone verloren und ist der Passkey nicht synchronisiert, ist kein Zugang mehr möglich.
Lösung des Verfahrensvergleichs
Passwort + SMS-Code Passwort + Authenticator-App Passkey auf dem Smartphone
beteiligte Faktoren (vorgegeben) Wissen + Besitz (Smartphone mit App) Besitz (Gerät mit privatem Schlüssel) + Inhärenz oder Wissen (Entsperren per Fingerabdruck, Gesicht oder Geräte-PIN)
Vorteil einfach, auch mit einfachem Handy ohne App nutzbar; Nutzende kennen das Verfahren (vorgegeben) kein Passwort mehr, das erbeutet werden kann; phishingresistent, weil an die echte Domain gebunden; auf dem Server liegt nur ein öffentlicher Schlüssel
Sicherheitsrisiko SMS sind nicht Ende-zu-Ende-verschlüsselt; Übernahme der Nummer durch SIM-Swapping; Code kann auf einer Phishing-Seite mit abgefragt werden Code kann auf einer Phishing-Seite abgefragt und sofort benutzt werden; bei Verlust des Smartphones ohne Wiederherstellungscode kein Zugang (vorgegeben)

Je richtig ergänzter Zelle 1 P (6 Zellen). Andere sinnvolle Vorteile und Risiken sind ebenfalls richtig.

d) Yusuf Demir schlägt im englischsprachigen Team-Wiki vor, langfristig Passkeys für alle Nutzenden anzubieten. Ein Auszug aus seiner Architekturentscheidung:

ADR-023: Offer passkeys as primary sign-in method

With a passkey, the user’s device creates a new key pair for Let’s Meet during registration. Only the public key is sent to our server and stored with the account; the private key never leaves the device or the user’s password manager. To sign in, our server sends a random challenge. The user unlocks the device with a fingerprint, face or device PIN, and the device signs the challenge with the private key. The server verifies the signature with the stored public key. Because the browser only offers the passkey on letsmeet.example, a fake login page on a look-alike domain cannot use it. Passwords and the reset link remain available as a fallback for users without a suitable device.

Beschreibe mithilfe des Textes, wie die Anmeldung mit einem Passkey abläuft, und erläutere zwei Vorteile gegenüber der Anmeldung mit Passwort und Reset-Link. (5 Punkte)

Ablauf (3 P):

  • Bei der Registrierung erzeugt das Gerät für Let’s Meet ein eigenes Schlüsselpaar. Nur der öffentliche Schlüssel wird an den Server geschickt und beim Konto gespeichert; der private Schlüssel bleibt auf dem Gerät bzw. im Passwortmanager. (1 P)

  • Bei der Anmeldung schickt der Server eine zufällige Herausforderung (Challenge). Die Person entsperrt ihr Gerät mit Fingerabdruck, Gesicht oder Geräte-PIN, und das Gerät signiert die Challenge mit dem privaten Schlüssel. (1 P)

  • Der Server prüft die Signatur mit dem gespeicherten öffentlichen Schlüssel; passt sie, ist die Person angemeldet. (1 P)

Vorteile (je 1 P, zwei verlangt):

  • Kein Geheimnis auf dem Server: Bei einem Einbruch in die Datenbank werden nur öffentliche Schlüssel erbeutet, mit denen man sich nicht anmelden kann – anders als bei Passwort-Hashwerten, die offline durchprobiert werden können.

  • Phishingresistent: Der Browser bietet den Passkey nur auf letsmeet.example an; eine nachgemachte Seite kann ihn nicht abfragen. Ein Passwort dagegen kann man auf jeder Seite eintippen.

  • Nichts zu vergessen: Es gibt kein Passwort, das vergessen werden kann; der Reset-Link – eine typische Schwachstelle – wird seltener gebraucht.

  • Zwei Faktoren in einem Schritt: Besitz des Geräts und Entsperren (Inhärenz oder Wissen) wirken zusammen.

Der Text nennt auch eine Einschränkung: Passwort und Reset-Link bleiben als Rückfallweg bestehen. Deren Sicherheit (siehe a und b) bleibt deshalb wichtig.

  1. 8 Punkte · b) 7 Punkte (2 + 5) · c) 12 Punkte (2 + 4 + 6) · d) 5 Punkte · Summe 32 Punkte

Hinweis zur Nachnutzung als Open Educational Resource (OER)

Dieser Artikel und seine Texte, Bilder, Grafiken, Code und sonstiger Inhalt sind - sofern nicht anders angegeben - lizenziert unter CC BY 4.0. Nennung gemäß TULLU-Regel bitte wie folgt: “Übungsaufgaben zu Authentifizierung und Autorisierung: Single Sign-on, OAuth2, Passwort-Reset und Mehr-Faktor-Anmeldung” von oer-informatik.de (H. Stein), Lizenz: CC BY 4.0. Der Artikel wurde unter https://oer-informatik.de/authentifizierung-uebungsaufgaben veröffentlicht, die Quelltexte sind in weiterverarbeitbarer Form verfügbar im Repository unter https://gitlab.com/oer-informatik/it-sicherheit/schutzmassnahmen. Erstellt mit KI-Assistenz; von mir umfassend redaktionell überarbeitet, geprüft und freigegeben. Stand: 28.10.2026.

[Kommentare zum Artikel lesen, schreiben] / [Artikel teilen] / [gitlab-Issue zum Artikel schreiben]

Kommentare gerne per Mastodon, Verbesserungsvorschläge per gitlab issue (siehe oben). Beitrag teilen: