Azure Fluid Relay-Tokenvertrag

Anforderungen, die an Azure Fluid Relay gesendet werden, sollten ein JWT-Token im Autorisierungsheader enthalten. Dieses Token muss vom Mandantenschlüssel signiertwerden.

Ansprüche

JSON Web Token (JWTs) sind in drei Teile unterteilt:

  • Header: Enthält Informationen dazu, wie Sie das Token überprüfen können. Dazu zählen auch Informationen zum Typ des Tokens und zu seiner Signierung.
  • Nutzdaten: Enthält alle wichtigen Daten über den Benutzer oder die App, der bzw. die Ihren Dienst aufzurufen versucht.
  • Signatur: Dies ist das Rohmaterial, das zum Überprüfen des Tokens verwendet wird.

Diese Teile sind jeweils durch einen Punkt (.) getrennt und werden separat Base64-codiert.

Headeransprüche

Anspruch Format Beschreibung
alg Zeichenfolge Der zum Signieren des Tokens verwendete Algorithmus. Beispiel: HS256
Typ Zeichenfolge Dieser Wert sollte immer „JWT“ sein.

Nutzlastansprüche

Anspruch Format Beschreibung
documentId Zeichenfolge Generiert vom Azure Fluid Relay (AFR)-Dienst. Identifiziert das Dokument, für das das Token generiert wird.
scope string[] Gibt an, welche Berechtigungen der Client für das Dokument oder die Zusammenfassung benötigt. Für jeden Bereich können Sie die Berechtigungen definieren, die Sie dem Client erteilen möchten.
tenantId Zeichenfolge Gibt den Mandanten an.
user JSON Identifiziert die Benutzer Ihrer Anwendung. Kann von Ihrer Anwendung verwendet werden, um Ihre Benutzer mithilfe der Fluid Framework-Zielgruppe zu identifizieren.
{ id: <user_id>, name: <user_name>, additionalDetails: { email: <email>, date: <date>, }, }
Iat Eine Zahl, ein UNIX-Zeitstempel „Issued At“ gibt an, wann die Authentifizierung für dieses Token erfolgt ist.
exp Eine Zahl, ein UNIX-Zeitstempel Der Anspruch „exp“ (Ablaufzeit) gibt die Ablaufzeit an, ab oder nach der das JWT zur Bearbeitung nicht akzeptiert werden darf. Die Tokenlebensdauer darf nicht mehr als 1 Stunde betragen.
ver Zeichenfolge Gibt die Version des Zugriffstokens an. Dieser Wert muss 1.0 sein.
jti Zeichenfolge Optional. Der Anspruch "jti" (JWT-ID) stellt einen eindeutigen Bezeichner für das JWT bereit. Der Bezeichnerwert MUSS auf eine Art und Weise zugewiesen werden, die sicherstellt, dass eine geringe Wahrscheinlichkeit besteht, dass der gleiche Wert versehentlich einem anderen Datenobjekt zugewiesen ist. Wir empfehlen Ihnen, diesen Anspruch zu verwenden, um Fehler aufgrund der Verwendung desselben Tokens für die Dokumenterstellung zu vermeiden.

Azure Fluid Relay-Beispieltoken

{ 
  "alg": "HS256",  
  "typ": "JWT" 
}.{ 
  "documentId": "746c4a6f-f778-4970-83cd-9e21bf88326c", 
  "scopes": [ "doc:read", "doc:write", "summary:write" ],   
  "iat": 1599098963,  
  "exp": 1599098963,  
  "tenantId": "AzureFluidTenantId",  
  "ver": "1.0",
  "jti": "d7cd6602-2179-11ec-9621-0242ac130002"
}.[Signature] 

Wie können Sie ein Azure Fluid Relay-Token generieren?

Sie können das npm-Paket jsonwebtoken verwenden und Ihr Token mit dieser Methode signieren.

export function getSignedToken(
    tenantId: string,
    documentId: string,
    tokenLifetime: number = 60 * 60,
    ver: string = "1.0") {
        jwt.sign(
            {
                documentId, 
                user: {
                    displayName: "displayName", 
                    id: "userId", 
                    name: "userName" 
                }, 
                scopes: ["doc:read", "doc:write", "summary:write"], 
                iat: Math.round((new Date()).getTime() / 1000), 
                exp: Math.round((new Date()).getTime() / 1000) + tokenLifetime, //set the expiry date based on your needs but max-limit is one hour.
                tenantId, 
                ver,
                jti: uuid(), 
            },
            "<tenant_key>");
    }