JWT-Authentifizierung

JSON Web Token (JWT) ist ein offener Standard für die sichere Übertragung von Informationen zwischen zwei Parteien als JSON-Objekt (JavaScript Object Notation). JWT wird zur Authentifizierung und Autorisierung verwendet. Da JWT single sign-on (SSO) aktiviert, wird die Anzahl der Anmeldungen eines Benutzers bei Cloud-Anwendungen und Websites minimiert.

JWT-Struktur

Ein JWT besteht aus drei Teilen: einem Header, den Nutzdaten und einer Signatur.

Header

Der Header besteht üblicherweise aus zwei Teilen: Typ (typ) und Algorithmus (alg). Mit dem Algorithmus wird die Signatur generiert.

Example:  

{

"typ": "JWT",

"alg": "RS256"

}

RS256 gibt an, dass die RS256 - RSA-Signatur mit SHA256 zum Signieren dieses Tokens verwendet wird.

Nutzlast

Die Nutzdaten sind ein JSON-Objekt, das die Aussagen enthält, die Sie treffen möchten. Aussagen sind Informationen zu einem Element (üblicherweise den Benutzer) und zusätzliche Metadaten. Entweder muss das Attribut „email“ oder die Attributkombination „domain“/„name“ definiert sein.

Example:  

{

"email":"jde@company.com",

"exp": 1472034208

}

Example:  

{

"name":"jde",

"domain":"company",

"exp": 1472034208

}

Signatur

Mit der Signatur wird die Identität des JWT-Absenders überprüft und sichergestellt, dass die Nachricht nicht manipuliert wurde. Die Signatur ist der codierte Header und die Nutzlast, signiert mit einem geheimen Schlüssel. Im Normalfall werden X.509-Zertifikate zum Generieren und Validieren der Signatur verwendet.

Die Authentifizierung erfolgt durch die Überprüfung der Signatur. Wenn die Signatur gültig ist, wird der Zugriff gewährt.

Unterstützte Signaturalgorithmen

Die folgenden Signaturen werden in Qlik NPrinting unterstützt:

  • RS256 - RSA-Signatur mit SHA256

  • RS384 - RSA-Signatur mit SHA384

  • RS512 - RSA-Signatur mit SHA512

Beispiel: Zugriff auf Qlik NPrinting mit einem signierten JWT

Das folgende Beispiel zeigt die Schritte, die an dem Vorgang beteiligt sind, mit dem mithilfe eines signierten JWT Zugriff erlangt wird.

  1. Ein JWT wird generiert, einschließlich einer Reihe von Ansprüchen, und mit dem privaten Schlüssel für das konfigurierte Zertifikat signiert.

  2. An den Proxy wird eine Anforderung gesendet, die das signierte JWT im HTTP-Autorisierungsheader enthält.

  3. Der Proxy fügt die konfigurierten Attributzuordnungen ein und leitet den Aufruf an den Backend-Dienst weiter.

  4. Der Client erhält eine Sitzung, und nachfolgende Aufrufe müssen kein JWT enthalten.

    1. Falls die Aufrufe ein JWT enthalten, wird es validiert. Falls es ungültig ist, wird dem Benutzer der Zugriff verweigert.
    2. Wenn sich der Benutzer im JWT von dem für die Sitzung gespeicherten Benutzer unterscheidet, erhält der Benutzer eine neue Sitzung.

Standardfelder

Die folgenden Felder in einem JWT-Anspruch werden von Qlik NPrinting verwendet:

  • Ablaufzeit (exp): Gibt die Ablaufzeit an, nach der das JWT nicht mehr akzeptiert wird.
  • Nicht vor (nbf): Gibt die Startzeit an, ab der das JWT akzeptiert wird.
Hinweis: In Ihrem JWT-Token können auch noch andere Felder konfiguriert werden. Jedoch nur die oben aufgeführten werden von Qlik NPrinting berücksichtigt.

Einschränkungen

Die folgenden Einschränkungen bestehen:

  • Verschlüsselte JWTs werden nicht unterstützt.

  • Nur die folgenden Signaturalgorithmen werden unterstützt:

    • RS256 - RSA-Signatur mit SHA256

    • RS384 - RSA-Signatur mit SHA384

    • RS512 - RSA-Signatur mit SHA512