Thumbnail: thi

Advent Projekt - THI App Reboot Pt. 5

von am unter blog
3 Minuten TTR (Time To Read)

Disclamer

Ich möchte niemanden beleidigen, und falls das so rüber kommt tut es mir leid. Ziel ist es den Code/die Anwendung anzuschauen und erklären wie man wo was besser machen hätte können.

Einführung

Über die Adventszeit möchte ich die THI App rebooten, heute gibt es Pt. 5 des Projekts.
Nun geht es and die Rest Bridge.
Heute wieder etwas kürzer…

Wir basteln unsere RESTBridge mitels Quarkus, dort knallen wir dann unsere Endpoints in Java rein.

Quarkus

Quarkus ist ein Java Framework welches von RedHat unterstützt wird, und deshalb ist es geil. Alternativ gäbs noch SpringBoot aber das ist etwas blöder.

Warum Quarkus?
Quarkus baut auf dem JakartaEE Standard, und als Java Entwickler taugt mir das besser als Go.

Was spricht für Go? Nichts, richtig, weil go kann ich nicht, und nur weil was hip ist macht es code nicht schöner/wartbarer (vgl JavaScript…). Achso Go kann Nativ, tja Quarkus auch dank GraalVM Cloud Native halt.

Deshalb Quarkus :heart:!

Geplante Endpoints

Alle Endpoints bis auf Auth werden als GET implementiert, so wie sich das für REST gehört…

  • /user/information
  • /user/grades
  • /user/calendar
  • /calendar/user
  • /calendar/general
  • /cafetaria/plan
  • /rooms/free
  • /professor

Auth

Als Auth habe ich mir überlegt irgendetwas richtung Stateless zu bauen…

Da gäbs 2 Möglichkeiten

  1. Die SessionID in einen JWT hängen
  2. Die SessionID verschlüsselt im JWT ablegen… Und nur am Server entschlüsseln…

Da ich vermutlich nicht um die SessionID Rumkomme muss ich schauen, wie ich das Vernünftig mache, dass das Passwort nicht beim Client Gespeichert werden Muss, bei der Bridge bin ich aber gezwungen das Passwort zu kennen…

Deshalb die Idee die Userdaten verschlüsselt in den Refreshtoken zu legen… Somit sollte das Abspeichern des Tokens auf der Clientseite weniger Problematisch sein… Zusätzlich kann der User das Passwort auch nochmal verschlüsseln und den Schlüssel im Request mit hinterlegen, das muss man aber mal durchspielen wie das wo Sinn macht.

Techniken Intern

  1. JWT
  2. Quarkus REST Client
  3. JAX-RS
  4. JsonB

Next Up

Am Wochenende mit der Implementierung beginnen…
So ist der Plan. Angefangen wird mit den REST Clients, denn der Rest benötigt noch Bedenkzeit.

Schritte

  1. Einführung Pt 1
  2. Groben Überblick über die Anwendung verschaffen Pt 2
  3. REST Calls Analysieren
    1. App Vorbereiten Pt 3
    2. Man In The Middle Proxy Pt 4
  4. REST Bridge Basteln
    1. Überlegungen Pt 5
    2. Converter Basteln Pt 6
    3. Gap Gap
    4. JWT Clearify Pt 7
  5. Neues Projekt auf Github anlegen
  6. UI implementieren
  7. REST verknüpfen
android, analyze, reverseengineer, REST, thi