In der vergangenen Woche konnte der User Account and Authentication (UAA) Service für die Smart Parking App erfolgreich fertiggestellt werden. Die implementierten Kernfunktionen sind die Registrierung neuer Benutzer sowie die Anmeldung von bereits registrierten Benutzern in der App. Darüber hinaus können Daten von Benutzerkonten geändert und Benutzer gelöscht werden.

Für jede der genannten Funktionalitäten stehen REST Endpoints zur Verfügung. Um die Menge der zu übertragenen Daten zu minimieren und eine sichere Übertragung von Informationen zu gewährleisten, verwenden wir JSON Web Token (JWT). JWT ist ein offener Standard zur sicheren Übertragung von JSON-Objekten. Zudem können hierdurch Endpoints vor nicht autorisiertem Zugang geschützt werden, indem für den Zugriff ein valider JWT benötigt wird und anhand dessen geprüft werden kann, ob der jeweilige Benutzer für die geünschte Aktion autorisiert ist.

Registriert sich ein neuer Benutzer in der App oder meldet sich ein bestehender Benutzer an, werden die Benutzerdaten als JSON im Body des HTTP-Requests an das Backend übermittelt. Daraufhin wird ein Token generiert und an das Frontend zurückgegeben. Der Token besteht aus den drei, durch Punkten voneinander getrennten Bestandteilen Header, Payload und Signature. Diese ergeben das Format „xxxxx.yyyyy.zzzzz“.

Der Payload enthält in der Regel Informationen über den Benutzer, wie zum Beispiel den Benutzernamen. Im Header wird unter anderem beschrieben, welcher Hash-Algorithmus verwendet wird. Die Signature ist ein Hash aus einer Kombination von Header, Payload und Secret. Durch den Secret, den nur der Aussteller des Tokens geht, kann sichergestellt werden, dass der Token nicht manipuliert worden ist und der Absender auch derjenige ist, für den er sich ausgibt.

Wurde nach der Anmeldung eines Benutzers ein Token für diesen ausgestellt und möchte dieser nun zum Beispiel Daten seines Benutzerkontos abfragen, wird lediglich der Token an den entsprechenden Endpoint im Backend versandt. Die Übermittlung findet im Header des HTTP-Requests statt. Im Backend wird dann geprüft, ob der Token valide ist und ob der Benutzer dazu berechtigt ist, die gewünschte Aktion durchzuführen.

Wenn euch interessiert, wie wir das Ganze umgesetzt haben, dann schaut doch in unser GitHub Repository. Das findet Ihr unter https://github.com/pheusel/smart-parking-uaa. Mehr über JWT findet Ihr unter https://jwt.io/.

Viel Spaß und einen schönen Feiertag

Euer Smart Parking Team

Authentifizierung und Autorisierung mit JWT