Anwendungsentwicklung und Softwarequalität – Authentifizierung und Autorisierung unterscheiden
Anwendungsentwicklung und Softwarequalität – Authentifizierung und Autorisierung unterscheiden
QR-Code
Einleitung
Anwendungsentwicklung und Softwarequalität – Authentifizierung und Autorisierung unterscheiden
Ausbildung Anwendungsentwicklung · 90 Minuten · ausschließlich fiktive Daten
Du lernst den Unterschied zwischen Authentifizierung (Identität überprüfen) und Autorisierung (konkrete Berechtigung entscheiden). Du testest dazu ein fiktives Ticketsystem in Python. Alle praktischen Tests laufen lokal ohne Netzwerkzugriff; keine fremden Systeme, echten Zugangsdaten oder Kundendaten verwenden.
Ausbildungsfall: Lernwerk
Lea und Noah sind Auszubildende, Mira ist Ausbilderin. Lea besitzt Ticket T-LEA, Noah Ticket T-NOA. Die Azubis dürfen nur eigene Tickets lesen. Mira darf beide lesen und freigeben.
| Rolle | Eigenes Ticket lesen | Fremdes Ticket lesen | Freigeben |
|---|---|---|---|
| Azubi | Ja | Nein | Nein |
| Ausbilderin | Ja | Ja | Ja |
Lerneinheit 1: Wer bist Du?
Authentifizierung überprüft eine behauptete Identität anhand eines Nachweises, beispielsweise Passwort oder Passkey. Die Vorlage des Nachweises wird auch Authentisierung genannt. Eine bestätigte Identität allein verleiht kein bestimmtes Zugriffsrecht.

Veranschaulichung von Passkeys bei Wikimedia.
Basisfrage: Lea hat sich angemeldet. Darf sie deshalb Noahs Ticket lesen? Begründe Deine Antwort.
Lerneinheit 2: Was darfst Du?
Autorisierung überprüft Aktion, Ressource, Rolle und gegebenenfalls die Zugehörigkeit eines Datensatzes. RBAC bündelt Berechtigungen in Rollen. Least Privilege beschränkt Rechte auf das Notwendige. Deny by Default verweigert nicht ausdrücklich erlaubte Aktionen.

| Identität | Aktion | Ressource | Simulation | Begründung |
|---|---|---|---|---|
| Lea | lesen | T-LEA | 200 | Eigenes Ticket |
| Lea | lesen | T-NOA | 403 | Fremder Datensatz |
| Lea | freigeben | T-LEA | 403 | Freigaberecht fehlt |
| Mira | freigeben | T-NOA | 200 | Rolle erlaubt Aktion |
| Noah mit unpassendem Testcode | lesen | T-NOA | 401 | Identität nicht bestätigt |
Statushinweis: 200 steht bei HTTP für Erfolg, 401 für fehlende gültige Authentifizierungsinformationen und 403 für verweigerten Zugriff. Das lokale Programm simuliert lediglich diese Zahlen; es betreibt keinen HTTP-Server.
Lerneinheit 3: Lokales Python-Labor
Speichere folgenden Python-3-Code als auth_labor.py. Alle Personen, Tickets und Testcodes sind frei erfunden. Die vierstelligen Codes sind ausschließlich didaktische Platzhalter; produktive Authentifizierung erfordert beispielsweise geeignete Passwort-Hashverfahren und sichere Sitzungsverwaltung.
# Offline-Lernmodell mit fiktiven Testdaten
import hmac
import sys
personen = {
'lea': ('1111', 'azubi'),
'noah': ('2222', 'azubi'),
'mira': ('3333', 'ausbilderin'),
}
tickets = {'T-LEA': 'lea', 'T-NOA': 'noah'}
rechte = {'azubi': {'lesen'},
'ausbilderin': {'lesen', 'freigeben'}}
def authentifizieren(name, code):
daten = personen.get(name)
if daten and hmac.compare_digest(daten[0], code):
return name
return None
def autorisieren(identitaet, aktion, ticket):
if identitaet not in personen:
return 401
if ticket not in tickets:
return 404
rolle = personen[identitaet][1]
if aktion not in rechte.get(rolle, set()):
return 403
if rolle == 'azubi' and tickets[ticket] != identitaet:
return 403
return 200
def pruefen(name, code, aktion, ticket):
return autorisieren(authentifizieren(name, code), aktion, ticket)
faelle = [
('lea', '1111', 'lesen', 'T-LEA', 200),
('lea', '1111', 'lesen', 'T-NOA', 403),
('lea', '1111', 'freigeben', 'T-LEA', 403),
('mira', '3333', 'freigeben', 'T-NOA', 200),
('noah', '2222', 'lesen', 'T-NOA', 200),
('noah', 'unpassend', 'lesen', 'T-NOA', 401),
('mira', '3333', 'lesen', 'T-XXX', 404),
]
def tests():
for name, code, aktion, ticket, soll in faelle:
ist = pruefen(name, code, aktion, ticket)
print(name, aktion, ticket, 'Soll:', soll, 'Ist:', ist)
assert ist == soll
print('Alle sieben Sollwerte bestätigt.')
def dialog():
print('Lokale Fantasiedaten: lea/1111, noah/2222, mira/3333')
while True:
name = input('Name (q beendet): ').strip().lower()
if name == 'q':
break
code = input('Fiktiver Testcode: ').strip()
aktion = input('Aktion lesen/freigeben: ').strip().lower()
ticket = input('Ticket T-LEA/T-NOA: ').strip().upper()
print('Entscheidung:', pruefen(name, code, aktion, ticket))
if __name__ == '__main__':
if len(sys.argv) == 2 and sys.argv[1] == '--test':
tests()
else:
dialog()Interaktiver Start: python3 -I auth_labor.py
Automatischer Testlauf: python3 -I auth_labor.py --test
Auf Windows gegebenenfalls py -I statt python3 -I verwenden. Das Programm nutzt nur Python-Standardmodule und öffnet keine Netzwerkverbindungen. Eingaben dürfen nur die angegebenen Fantasiedaten enthalten.
Gestufte Hilfen
Lerneinheit 4: Qualität durch Prüfungen
Eine ausgeblendete Schaltfläche ersetzt keine Zugriffskontrolle an der geschützten Aktion. Prüfe Berechtigungen im vertrauenswürdigen Backend und kontrolliere nach Änderungen sowohl erlaubte als auch verweigerte Zugriffe.

Transfer: Bei OAuth 2.0 geht es um delegierte Autorisierung; OpenID Connect ergänzt eine Identitätsschicht.

Interaktive Aufgaben
Quiz: Teste Dein Wissen
Was prüft die Authentifizierung? (Die behauptete Identität) (!Die Ticketfarbe) (!Den Ticketpreis) (!Die Freigabedauer)
Was prüft die Autorisierung? (Die konkrete Berechtigung) (!Die Schriftgröße) (!Die Kennwortlänge allein) (!Den Gerätenamen allein)
Was folgt aus einem erfolgreichen Login? (Eine bestätigte Identität) (!Uneingeschränkte Schreibrechte) (!Freigabe aller Tickets) (!Zugriff auf alle Datensätze)
Wer darf im Lernmodell freigeben? (Die Ausbilderin) (!Jeder Azubi) (!Jeder Gast) (!Jede unbekannte Person)
Was schützt die Eigentümerprüfung? (Fremde Tickets) (!Die Bildschirmfarbe) (!Den Dateinamen) (!Die Uhrzeit)
Was bedeutet Least Privilege? (Nur notwendige Rechte vergeben) (!Alle Rechte vergeben) (!Keine Rollen verwenden) (!Jede Aktion erlauben)
Was liefert der simulierte Zugriff mit unpassendem Testcode? (401) (!200) (!201) (!403)
Was liefert die Simulation bei verbotener Freigabe? (403) (!200) (!201) (!301)
Was bezeichnet RBAC? (Rollenbasierte Zugriffskontrolle) (!Automatische Bildkompression) (!Freigabe ohne Prüfung) (!Datensicherung allein)
Wo wird eine geschützte Aktion zuverlässig geprüft? (Im vertrauenswürdigen Backend) (!Nur durch versteckte Schaltflächen) (!Nur durch eine Seitenfarbe) (!Nur durch einen Hinweistext)
Begründetes Feedback
Memory
| Identität | Behauptete Person |
| Authentifizierung | Nachweisprüfung |
| Autorisierung | Berechtigungsentscheidung |
| Rolle | Bündel zugewiesener Rechte |
| Ressource | Geschütztes Ticket |
| Minimalprinzip | Begrenzte Berechtigung |
Drag and Drop
| Ordne die richtigen Begriffe zu. | Thema |
|---|---|
| Authentifizierung | Identitätsnachweis |
| Autorisierung | Aktionsrecht |
| Rollenmodell | Rechtebündel |
| Eigentümerprüfung | Datensatzzugehörigkeit |
| Standardverweigerung | Fehlende Freigabe |
Kreuzworträtsel
| Authentifizierung | Wie heißt die Prüfung eines behaupteten Identitätsnachweises? |
| Autorisierung | Wie heißt die Entscheidung über einen konkreten Zugriff? |
| Rollenmodell | Welches Modell bündelt Berechtigungen? |
| Ticket | Welche Ressource nutzen Lea und Noah? |
| Freigabe | Welche Aktion darf nur Mira ausführen? |
| Minimalprinzip | Welches Prinzip begrenzt Rechte auf das Nötige? |
LearningApps
Freiwilliger externer Dienst: Nur nach ausdrücklicher Freigabe öffnen und keine echten personenbezogenen Informationen eingeben.
Lückentext
Praxisaufgaben mit gestuftem Feedback
Basis: Kennzeichne Login-Nachweis und Ticketfreigabe als Authentifizierung beziehungsweise Autorisierung. Feedback: Der erste Vorgang bestätigt Identität; der zweite prüft Handlungsrechte.
Anwendung: Entferne in einer separaten lokalen Kopie testweise die Eigentümerprüfung. Welche der sieben Sollwerte ändern sich? Feedback: Der Zugriff auf ein fremdes Ticket wird dann fälschlich erlaubt; der betreffende Negativtest deckt das auf.
Transfer: Ergänze eine fiktive Prüferrolle, die beide Tickets lesen, jedoch keines freigeben darf. Feedback: Die Umsetzung ist passend, wenn Lesen erlaubt und Freigeben verweigert wird.
Offene Aufgaben
Leicht
- Authentifizierung: Gestalte eine Bildkarte zu einem fiktiven Login.
- Autorisierung: Zeichne eine erlaubte und eine verweigerte Ticketaktion.
- Rollenmodell: Erstelle eine kleine eigene Berechtigungsmatrix.
- Softwaretest: Dokumentiere drei lokale Testfälle mit Sollwerten.
Standard
- Python: Ergänze eine weitere fiktive Person im Lernmodell.
- Testfall: Prüfe unbekannte Aktionen und unbekannte Tickets.
- Berechtigungskonzept: Entwirf die Rechte einer fiktiven Bibliotheksanwendung.
- Softwarequalität: Zeichne die Abfolge aus Identitäts- und Rechteprüfung.
Schwer
- Sicherheitsanalyse: Vergleiche das Lernmodell mit und ohne Eigentümerprüfung.
- Attribute-Based Access Control: Ergänze eine zusätzliche fiktive Zuständigkeitsregel.
- Regressionstest: Entwickle weitere positive und negative Testfälle.
- Softwarearchitektur: Entwirf getrennte Komponenten für Identität und Berechtigung.


Lernkontrolle
- Zugriffskontrolle: Begründe, warum ein erfolgreicher Login noch kein Leserecht für fremde Tickets begründet.
- Rollenmodell: Zeige an einem Beispiel, warum die Rolle allein nicht ausreichen kann.
- Regressionstest: Entwirf eine Prüfung, die einen unbeabsichtigten Fremdzugriff erkennt.
- Minimalprinzip: Entwickle eine Alternative zu pauschalen Administratorrechten für Azubis.
- Softwarearchitektur: Begründe die notwendige Prüfung am geschützten Backend.
Lernnachweis
- Erläutere den Unterschied zwischen Identitätsprüfung und Berechtigung.
- Dokumentiere eine Berechtigungsmatrix für fiktive Rollen.
- Zeige die lokale Ausführung von Dialog- und Testmodus.
- Begründe mindestens sechs Soll-Ist-Entscheidungen.
- Übertrage das Prinzip auf eine weitere fiktive Anwendung.
OERs zum Thema
Quellen und Medienrechte
- OWASP Authentication Cheat Sheet
- OWASP Authorization Cheat Sheet
- NIST SP 800-63B-4
- MDN 401
- MDN 403
- Commons: Rollenmodell, CC0
- Commons: Passkey-Screenshot, CC BY-SA 4.0
- Commons: Rechteausweitung, CC0
- Commons: OAuth-Dialog, Lizenz auf der Dateiseite beachten
Die YouTube-Medien von O'Reilly, Erik Wilde und Thapa Technical sind externe Einbindungen und keine frei nachnutzbaren Dateien. Beachte Urheberrecht und Freigabe durch die Lehrkraft. Die Commons-Lizenzen und Namensnennung sind bei Weiterverwendung zu prüfen. Die lokalen Programmtests benötigen keine externen Medien.
Verknüpfte Lernbereiche
aiMOOC-Projekte
Schulfach+


aiMOOCs


aiMOOC Projekte


MOOCwiki · Deutsch
Nach dem Lernen ist vor dem Lernen
Entdecke direkt den nächsten Lernkurs. Weitere Inhalte erscheinen, wenn Du weiter nach unten scrollst.
Zur MOOCwiki-HauptseiteMediathek
Mediathek wird aus dem Wiki geladen ...
Keine passenden Inhalte gefunden. Bitte ändere Suche oder Filter.
NEWSLernweltNOAH fragen