LU05.A01 - Authentifizierungsservice erstellen

Erstelle einen Authentifizierungsservice als RESTful Flask-Applikation.

GitHub Classroom Assignment

Umsetzung

Für die Umsetzung im Modulunterricht erstellen wir eine RESTful Flask-Applikation.

Benutzerkonten

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

Request

Der Client sendet einen POST-Request mit dem Benutzernamen und dem Passwort.

Service

Verarbeitung

Funktion "post" / "auth_resource.py"

  1. Parse die Argumente aus dem Request.
  2. Suche den Benutzer anhand des Benutzernamens
  3. Falls ein Benutzer gefunden wurde
    1. Falls der SHA256-Hash des übermittelten Passworts mit dem Passwort des Benutzers übereinstimmt:
      1. Erzeuge ein Token

Funktion "_make_token" / "auth_resource.py"

Erzeuge ein JSON Web Token mit den Claims:

Response

Authentifizierung erfolgreich

Die Response unseres Services besteht aus dem HTTP-Statuscode „200“ und einem JSON Web Token. Das Token enthält:

Authentifizierung nicht erfolgreich

Als Response wird der HTTP-Statuscode 401 gesendet.

⇒ GitHub Repo für externe Besucher

GitHub Repository https://github.com/templates-python/m321-lu05-a01-authentication

Lernende am BZZ müssen den Link zum GitHub Classroom Assignment verwenden


Marcel Suter