Thumbnail: thi

Advent Projekt - THI App Reboot Pt. 7

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

Naja Neues Jahr neues glück… Eigentlich sollte ich ja lernen, hatte aber gerade lust auf bisschen Nachdenken. User Auth, das wird schön JWT und bisschen PKI sollte es tun…

Und eigentlich reicht JWT vollkomme aus, Refresh- und Auth-Token sind toll genug.

Überlegungen

Wie im Gap bereits überlegt soll bisschen PKI1 rein, in diesem Falle wollen wir nicht viel machen… Dem User geben wir unseren Server Public Key mit, und dem Token den Verschlüsselten AuthCookie des Hochschul-Endpoints (Verschlüsselt mit dem Public Key). Somit muss ich mir den Cookie nicht merken, und der User kann seine Credentials Verschlüsselt in einem Lokalen Store Ablegen, ohne dass ich mir je die Credentials merken muss, einfach die Verschlüsselten Credentials im RAM auspacken und gegen den Endpoint werfen…

Der User bekommt dann seine Verschlüsselten Credentials zurück (immer mit Public Key Verschlüsselt)

Also Nochmal

Schützenswert:

  • SessionCookie
  • User Credentials

Verschlüsseln mit dem Public Key:

  • Nur der Server kann die Daten entpacken…
  • Der User kann seine Payload auch vorab verschlüsselt schicken…

Prinzipiell ist das egal, da wir HTTPS nutzen ist die Transport-Verschlüsselung ausreichend, hierbei geht es eigentlich nur um das “verschüsselte” ablegen der User Credentials, um nicht mit geklauten APP Daten in den Hochschul Account zu gelangen.

Resultat

Verschlüsselung der User Daten macht keinen Sinn, das ist ein unnötiger Schritt den keiner braucht… Die Credentials sollen beim Client verschlüsselt abgelegt werden und fertig, wir betten die Infos einfach in den Refresh Token ein. Juckt doch keinen, lieber so als eine unnötige Hürde rein ziehen, welche redundant zu HTTPS ist.

Wir haben HTTPS und fertig, das reicht schon.

JWT aufbau

Auth Token

{
    "exp": [sessionTimeout],
    "session": "[SessionID_7m2]",
    "user": "[Us3r]"
}

Refresh Token

{
    "exp": [tokenLivetime e.G. 1Month],
    "username": "[Us3r]",
    "password": "[P4ssw0rd]"
}

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