LU06.A01 - Autorisierung

Ergänze die Autorisierung mittels JSON Web Token in der vorgegebenen Applikation.

GitHub Classroom Assignment

Die Webapplikation bietet 3 unterschiedliche Services an. Jenachdem welche Rolle ein Client hat, darf er diese Services benutzen.

Service HTTP-Methode Rollen
customer employee admin
readData GET X X X
saveData POST - X X
deleteData DELETE - - X

Der Client muss die Rolle in einem JSON Webtoken als Claim userrole mitsenden.

  1. Realisiere die nötigen Decorators um die Autorisation des Clients zu prüfen.
  2. Ergänze jeden Service mit den korrekten Decorators.

@valid_token

Das Token im Authorization-Header wird decodiert und geprüft. Falls ein gültiges Token vorhanden ist, wird der Claim userrole im globalen Kontext g gespeichert.

@customer_required

Prüft ob im globalen Kontext eine userrole vorhanden ist. Die userrole muss customer, employee oder admin sein.

@employee_required

Prüft ob im globalen Kontext eine userrole vorhanden ist. Die userrole muss employee oder admin sein.

@admin_required

Prüft ob im globalen Kontext eine userrole vorhanden ist. Die userrole muss admin sein.

Um deine Applikation zu testen, benötigst du ein gültiges Token. Dieses kannst du über das Login in der Applikation “m321-lu05-a01-authentication” erhalten.

  • Beide Applikationen müssen den gleichen Schlüssel im ACCESS_TOKEN_KEY verwenden.
  • Die Applikationen müssen auf unterschiedlichen Ports laufen:
    • m321-lu05-a01-authentication / Port 5000
    • m321-lu06-a01-authorization / Port 5001

Den Port kannst du in der “Run/Debug Configuration” von PyCharm über “Additional options” einstellen.

⇒ GitHub Repo für externe Besucher

GitHub Repository https://github.com/templates-python/m321-lu06-a01-authorization

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


Marcel Suter

  • modul/m321/learningunits/lu06/aufgaben/autorisation.txt
  • Last modified: 2024/02/27 10:49
  • by msuter