Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Table of Contents

...

Authentifizierung (mit JWT)

Einleitung

Was ist JWT?

JSON Web Token (JWT) ist ein offener Standard (RFC 7519), das eine kompakte und eigenständige Methode für die sichere Übertragung von Informationen zwischen Parteien als JSON-Objekt definiert. Diese Informationen können überprüft und vertrauenswürdig sein, da sie digital signiert sind. JWTs können mit einem geheimen Schlüssel signiert werden (mit dem HMAC Algorithmus) oder ein öffentliches/privates Schlüsselpaar mit RSA oder ECDSA.
Session Timeout (bei Benutzerinteraktion) & Auto-Logout (ohne Benutzerinteraktion)

Was ist ein Zugriffstoken?

Zugriffstoken werden bei der tokenbasierten Authentifizierung verwendet, um einer Anwendung den Zugriff auf eine API zu ermöglichen. Die Clientanwendung erhält ein Zugriffstoken, nachdem ein Benutzer den Zugriff erfolgreich authentifiziert und autorisiert hat, und übergibt dann das Zugriffstoken als Anmeldeinformationen, wenn die Ziel-API aufgerufen wird. Der signierte Zugrifftoken informiert die API, dass der Träger des Tokens autorisiert wurde, auf die API zuzugreifen und bestimmte Aktionen auszuführen, die durch den Bereich angegeben sind, der während der Autorisierung gewährt wurde.

Was ist ein Aktualisierungstoken?

Ein Aktualisierungstoken ist eine spezielle Art von Token, das verwendet wird, um ein erneutes Zugriffstoken zu erhalten. Sie können neue Zugriffstoken nach deren Ablauf anfordern. Anwendungen müssen Aktualisierungen und Zugriff speichernToken sicher, da sie im Wesentlichen speichernund kann ewig verwendet werden (Aktualisieren - Zugriff => Aktualisieren - Zugriff...).

Aktualisierungstoken verbessern die Authentifizierung erheblich. Der Benutzer muss sich nur einmal über den Webauthentifizierungsprozess authentifizieren. Die anschließende erneute Authentifizierung kann ohne Benutzerinteraktion mithilfe des Aktualisierungstokens erfolgen.

...

TIMs Ansatz zur Verwendung von JWT

JWT-Anrufe

Fast-Track-Dokumentation
Login-Anfrage
  • Der Endpunkt /tim/api/auth/login mit HTTP-Methode POST und Body Parameter username + password muss aufgerufen werden, nachdem Sie die folgenden Schritte ausgeführt haben:

    1. Das Passwort MUSS base64-kodiert sein (der Benutzername darf NICHT verschlüsselt sein)

    2. Inhaltstyp: application/x-www-form-urlencoded

    3. Der POST-Text muss Variablen wie username=testuser&password=testpass

Als Ergebnis der Anmeldeanforderung sendet der Server eine Antwort mit 2 generierten Token (accessToken + refreshToken).

Aufrufen einer API
  • Stellen Sie sicher, dass Sie über ein Zugriffstoken verfügen, oder senden Sie eine Anmeldeanforderung, um es zu erhalten

  • Alle anderen Anfragen an die API müssen gesendet werden, nachdem Sie einen der folgenden Schritte ausgeführt haben:

    • im Vertrauen auf das HttpOnly-Cookie, das nach der Anmeldeanfrage automatisch gesetzt wird

    • die Autorisierung Header muss hinzugefügt werden. Es hat das Format: Bearer AccessToken

Info

Die Verwendung des HttpOnly-Cookies ist eine bessere Lösung, da der Angreifer nicht auf das Zugriffstoken zugreifen kann.

Anforderung zum Aktualisieren von Token
  • Wenn Ihre Anzahl der Anfragen nicht mehr als ~ 1 pro Stunde beträgt, können Sie Ihr Token nicht aktualisieren, sondern nur eine neue Authentifizierung durchführen (abhängig von Ihrem Modul-Setup)

  • Stellen Sie sicher, dass Sie über ein Aktualisierungstoken verfügen, oder senden Sie eine Anmeldeanforderung, um es zu erhalten

  • Der POST-Text muss Variablen wie refreshToken=yourRefreshToken

  • Der Endpunkt /tim/api/auth/refresh mit HTTP-Methode POST muss aufgerufen werden

Als Ergebnis der Aktualisierungstokenanforderung sendet der Server eine Antwort mit 2 neu generierten Token (accessToken + refreshToken).

Abmeldeanforderung
  • Der Endpunkt /tim/api/auth/logout muss aufgerufen werden

  • das HttpOnly-Cookie access_token wird automatisch aus dem Browser gelöscht

Aufgrund der Abmeldeanforderung kann der Benutzer nicht auf die Serverressourcen zugreifen, da das HttpOnly-Cookie clientseitig gelöscht wird. Da die Zugriffstoken-Blacklist jedoch nicht in TIM implementiert ist, kann die Autorisierung bis zum Ablauf des Tokens gültig sein, wenn der Benutzer das Zugriffstoken vor der Abmeldung speichern konnte.

Was muss für Systeme, die TIM aufrufen, geändert werden?

Die Systeme müssen die folgenden Schritte ausführen:

...

Info

Jedes Mal, wenn eine Anforderung von einem Benutzer oder einem anderen System empfangen wird, sucht TIM automatisch nach dem Autorisierungsheader oder dem HttpOnly-Cookie und validiert deren Token.

Senden von Anforderungen von der Clientseite

Dieser Teil zeigt Ihnen, wie Anfragen an den Server über Javascript gestellt werden können, mit Beispielen für Authentifizierung und autorisierte Anfragen unter Verwendung des Autorisierungsheaders.

...

View file
nameLogin request + API request (AJAX).html

Aufrufen eines Webdiensts

Es kann vorkommen, dass ein System den TIM-Webdienst verwenden muss. Angenommen, das System möchte eine Anforderung zur Archivierung einer Prozessinstanz senden. Um dies zu tun, sollte das System die GenericEntityManager Webservice und die Archiv -Methode, die sich dort befindet.

...

Als weiteres Beispiel kann der Webservice über die Browserkonsole direkt aufgerufen werden. In diesem Fall ist keine Konfiguration erforderlich, da das Zugriffstoken während der Anmeldeanforderung als HttpOnly-Cookie gesetzt wurde und TIM dieses Cookie verwendet, um die Anforderung zu autorisieren.

...

Ausführliche Dokumentation mit Beispielen

Zunächst ist eine Authentifizierung erforderlich, um Zugriff auf die Serverressourcen zu erhalten. Der Benutzer muss sich am System anmelden, um authentifiziert zu werden.
Wenn der Benutzer in TIM eine Anmeldeanforderung an den Server sendet, sendet der Server eine Antwort, die Zugriffs- und Aktualisierungstoken enthält, und das Zugriffstoken wird ebenfalls auf dem Cookie platziert.

...

Info

Das verschlüsselte Kennwort schützt Benutzeranmeldeinformationen und verhindert unbefugten Zugriff auf eine Website.
Gebrauchen https://www.base64encode.org/ , um Ihr Passwort dort zu verschlüsseln. Danach kopieren Sie das codierte Kennwort und fügen Sie es in den Wert des Kennwortparameters ein.

Login-Anfrage

Nachdem alle Schritte abgeschlossen und alle notwendigen Parameter hinzugefügt wurden, kann eine Anmeldeanfrage an den Server gesendet werden.

...

Info

Die Autorisierung über ein HttpOnly-Cookie ermöglicht es einem Benutzer, verschiedene Aufrufe an den Server zu tätigen.

Anforderung zum Aktualisieren von Token

Um beide Token zu aktualisieren (Zugriff + Aktualisieren), wird die Anforderung an den Server mit Endpunkt /tim/api/auth/refresh und die HTTP-Methode POST muss gesendet werden.

...

In diesem Fall wurde ein neues Paar von Zugriffs- und Aktualisierungstoken empfangen. Im Falle der Verwendung des TIM-Produkts erfolgt die Anforderung der Token-Erneuerung automatisch, wodurch der Benutzer lange Zeit im System authentifiziert bleiben kann.

Abmeldeanforderung

Logout-Anfragen können über die Schaltfläche /tim/api/auth/logout Endpunkt und HTTP-Methode GET.

Wenn sich der Benutzer abmeldet, wird das HttpOnly-Cookie access_token wird gelöscht und der Benutzer kann nicht mehr auf die Ressourcen des Servers zugreifen. Wie im folgenden Screenshot zu sehen ist, wurde das Cookie während der Abmeldeanforderung gelöscht.

...

Verwenden von JWT in REST-Konnektoren

Konnektoren ermöglichen die Verwendung der REST-API für die Verbindung mit der TIM-API. Die Anforderung muss berechtigt sein, die TIM-API aufzurufen. In diesem Abschnitt wird gezeigt, wie Sie die Authentifizierung in Connectors konfigurieren, um autorisierte Anforderungen auszuführen. Folgende Schritte müssen unternommen werden:

...

Info

Konfiguration von OAuth-Header Ermöglicht die Ausführung autorisierter Anfragen. Die Anmeldeanforderung wird aufgerufen, bevor der in der Endpunktkonfiguration angegebene Endpunkt aufgerufen wird.

Allgemeine Informationen & FAQ


Was sind die Vorteile von JWT?

  • Keine Datenbankaufrufe erforderlich: Da JWTs in sich geschlossen sind, alle notwendigen Informationen im Token vorhanden sind und die Speicherung zusätzlicher Daten über ausgegebene Sitzungen nicht erforderlich ist, muss der Server lediglich die Signatur überprüfen. Daher bedeutet es weniger Datenbankabfragen und eine schnellere Antwortzeit. Es sollte auch beachtet werden, dass dieser Vorteil entfällt, wenn die Deny-Liste der Token implementiert wird.

  • Zeitbasierte Token: JWTs laufen in bestimmten Intervallen ab, was sie sicherer macht.

  • Keine zu verwaltende Sitzung (zustandslos): JWT-Token können in Cookies oder im lokalen Speicher gespeichert werden, anstatt wie bei der traditionellen Erstellung einer Sitzung auf dem Server. Die beste Option ist, sie im httpOnly-Cookie zu speichern.

  • Tragbar: Ein einzelnes Token kann mit mehreren Backends verwendet werden (wenn Backends dieselben privaten Schlüssel verwenden).

  • Digital signiert: Informationen werden verifiziert und vertrauenswürdig. JWTs sollten mit einem geheimen Schlüssel (mit dem HMAC-Algorithmus) oder einem öffentlichen/privaten Schlüsselpaar mit RSA oder ECDSA signiert werden.

Gebrauchen

JWTs können auf verschiedene Arten verwendet werden:

  • Authentication: Wenn sich ein Benutzer erfolgreich mit seinen Anmeldeinformationen anmeldet, wird ein ID-Token zurückgegeben.

  • Authorization: Sobald ein Benutzer erfolgreich angemeldet ist, kann eine Anwendung im Namen dieses Benutzers Zugriff auf Routen, Dienste oder Ressourcen (z. B. APIs) anfordern. Dazu muss es in jeder Anforderung ein Zugriffstoken übergeben, das in Form eines JWT vorliegen kann. Single Sign-On (SSO) verwendet JWT aufgrund des geringen Overheads des Formats und seiner Fähigkeit, problemlos über verschiedene Domänen hinweg verwendet zu werden.

  • Information Exchange: JWTs sind eine gute Möglichkeit, Informationen sicher zwischen Parteien zu übertragen, da sie signiert werden können, was bedeutet, dass Sie sicher sein können, dass die Absender die sind, für die sie sich ausgeben. Darüber hinaus können Sie anhand der Struktur eines JWT überprüfen, ob der Inhalt nicht manipuliert wurde.

Struktur von JWT

JWT besteht aus 3 Teilen, die durch einen Punkt getrennt sind.

...

Das Unterschrift stellt sicher, dass das Token nicht geändert wurde. Die Partei, die das JWT erstellt, signiert den Header und die Nutzlast mit einem geheimen Schlüssel, der sowohl dem Aussteller als auch dem Empfänger bekannt ist, oder mit einem privaten Schlüssel, der nur dem Absender bekannt ist. Wenn das Token verwendet wird, überprüft die empfangende Partei, ob der Header und die Nutzlast mit der Signatur übereinstimmen. 

Wie funktioniert JWT?

Wenn sich der Benutzer bei der Authentifizierung erfolgreich mit seinen Anmeldeinformationen anmeldet, wird JWT zurückgegeben. Da Token Anmeldeinformationen sind, muss sehr darauf geachtet werden, Sicherheitsprobleme zu vermeiden. Im Allgemeinen sollten Token nicht länger als erforderlich aufbewahrt werden.

...