Erstelle einen Authentifizierungsservice als RESTful Flask-Applikation.
Für die Umsetzung im Modulunterricht erstellen wir eine RESTful Flask-Applikation.
Die Benutzerkonten speichern wir als JSON-Objekte in einer Datei.
[ { "username": "hans@abc.xy", "password": "addb0f5e7826c857d7376d1bd9bc33c0c544790a2eac96144a8af22b1298c940", "role": "customer" }, { "username": "andrea@abc.xy", "password": "d14769b181706206c248aadd1c01dbf37568572f9a702a6a92bc2d8d9573a9a5", "role": "employee" }, { "username": "beatrice@abc.xy", "password": "33c5ebbb01d608c254b3b12413bdb03e46c12797e591770ccf20f5e2819929b2", "role": "admin" } ]
Das Passwort ist als SHA-256 Hash gespeichert.
Benutzer | Passwort |
---|---|
hans@abc.xy | geheim |
andrea@abc.xy | passWORT |
beatrice@abc.xy | passwort |
Der Client sendet einen POST-Request mit dem Benutzernamen und dem Passwort.
POST
/login
username
password
Erzeuge ein JSON Web Token mit den Claims:
username
: Benutzername des angemeldeten Benutzersuserrole
: Die Benutzerrolle des angemeldeten Benutzersexp
: Ablaufdatum / Berechnet aus der aktuellen Zeit und der Gültigkeit in Sekunden (TOKEN_DURATION
)Die Response unseres Services besteht aus dem HTTP-Statuscode „200“ und einem JSON Web Token. Das Token enthält:
exp
: Ablaufzeit des Tokens. Berechnet aus der aktuellen Zeit und der Gültigkeit in Sekunden (TOKEN_DURATION
)username
: Benutzernameuserrole
: Benutzerrolle
Als Response wird der HTTP-Statuscode 401
gesendet.
GitHub Repository https://github.com/templates-python/m321-lu05-a01-authentication
Lernende am BZZ müssen den Link zum GitHub Classroom Assignment verwenden