{"id":990,"date":"2019-06-19T18:02:03","date_gmt":"2019-06-19T18:02:03","guid":{"rendered":"https:\/\/2019.iot-embedded.de\/?p=990"},"modified":"2021-05-14T10:08:13","modified_gmt":"2021-05-14T08:08:13","slug":"authentifizierung-und-autorisierung-mit-jwt","status":"publish","type":"post","link":"http:\/\/www.iot-embedded.de\/iot-2019\/smart-parking\/authentifizierung-und-autorisierung-mit-jwt\/","title":{"rendered":"Authentifizierung und Autorisierung mit JWT"},"content":{"rendered":"\n<p>In der vergangenen Woche konnte der User Account and Authentication (UAA)  Service f\u00fcr 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\u00fcber hinaus k\u00f6nnen Daten von Benutzerkonten ge\u00e4ndert und Benutzer gel\u00f6scht werden. <\/p>\n\n\n\n<p>F\u00fcr jede der genannten Funktionalit\u00e4ten stehen REST Endpoints zur Verf\u00fcgung. Um die Menge der zu \u00fcbertragenen Daten zu minimieren und eine sichere \u00dcbertragung von Informationen zu gew\u00e4hrleisten, verwenden wir JSON Web Token (JWT). JWT ist ein offener Standard zur sicheren \u00dcbertragung von JSON-Objekten. Zudem k\u00f6nnen hierdurch Endpoints vor nicht autorisiertem Zugang gesch\u00fctzt werden, indem f\u00fcr den Zugriff ein valider JWT ben\u00f6tigt wird und anhand dessen gepr\u00fcft werden kann, ob der jeweilige Benutzer f\u00fcr die ge\u00fcnschte Aktion autorisiert ist.<\/p>\n\n\n\n<p>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 \u00fcbermittelt. Daraufhin wird ein Token generiert und an das Frontend zur\u00fcckgegeben. Der Token besteht aus den drei, durch Punkten voneinander getrennten Bestandteilen Header, Payload und Signature. Diese ergeben das Format &#8222;xxxxx.yyyyy.zzzzz&#8220;.<\/p>\n\n\n\n<p>Der Payload enth\u00e4lt in der Regel Informationen \u00fcber 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\u00fcr den er sich ausgibt.<\/p>\n\n\n\n<p>Wurde nach der Anmeldung eines Benutzers ein Token f\u00fcr diesen ausgestellt und m\u00f6chte dieser nun zum Beispiel Daten seines Benutzerkontos abfragen, wird lediglich der Token an den entsprechenden Endpoint im Backend versandt. Die \u00dcbermittlung findet im Header des HTTP-Requests statt. Im Backend wird dann gepr\u00fcft, ob der Token valide ist und ob der Benutzer dazu berechtigt ist, die gew\u00fcnschte Aktion durchzuf\u00fchren.<\/p>\n\n\n\n<p>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 \u00fcber JWT findet Ihr unter https:\/\/jwt.io\/.<\/p>\n\n\n\n<p>Viel Spa\u00df und einen sch\u00f6nen Feiertag <\/p>\n\n\n\n<p>Euer Smart Parking Team<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In der vergangenen Woche konnte der User Account and Authentication (UAA) Service f\u00fcr 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\u00fcber hinaus<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[8],"tags":[],"_links":{"self":[{"href":"http:\/\/www.iot-embedded.de\/iot-2019\/wp-json\/wp\/v2\/posts\/990"}],"collection":[{"href":"http:\/\/www.iot-embedded.de\/iot-2019\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.iot-embedded.de\/iot-2019\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.iot-embedded.de\/iot-2019\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"http:\/\/www.iot-embedded.de\/iot-2019\/wp-json\/wp\/v2\/comments?post=990"}],"version-history":[{"count":1,"href":"http:\/\/www.iot-embedded.de\/iot-2019\/wp-json\/wp\/v2\/posts\/990\/revisions"}],"predecessor-version":[{"id":1173,"href":"http:\/\/www.iot-embedded.de\/iot-2019\/wp-json\/wp\/v2\/posts\/990\/revisions\/1173"}],"wp:attachment":[{"href":"http:\/\/www.iot-embedded.de\/iot-2019\/wp-json\/wp\/v2\/media?parent=990"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.iot-embedded.de\/iot-2019\/wp-json\/wp\/v2\/categories?post=990"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.iot-embedded.de\/iot-2019\/wp-json\/wp\/v2\/tags?post=990"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}