Azure Fluid Relay-tokenkontrakt

Begäranden som skickas till Azure Fluid Relay ska innehålla en JWT-token i auktoriseringshuvudet. Den här token ska signeras av klientnyckeln.

Anspråk

JWTs (JSON Web Tokens) delas upp i tre delar:

  • Rubrik – Innehåller information om hur du verifierar token, inklusive information om typen av token och hur den signerades.
  • Payload – innehåller alla viktiga data om den användare eller app som försöker anropa din tjänst.
  • Signatur – används råmaterialet för att verifiera token.

Varje del avgränsas med en punkt (.) och är separat Base64-kodad.

Rubrikanspråk

Anspråk Format Description
Alg sträng Algoritmen som används för att signera token. Till exempel "HS256"
skriv sträng Det här värdet ska alltid vara "JWT".

Nyttolastanspråk

Anspråk Format Description
documentId sträng Genereras av Tjänsten Azure Fluid Relay (AFR). Identifierar det dokument som token genereras för.
omfattning string[] Identifierar de behörigheter som krävs av klienten i dokumentet eller sammanfattningen. För varje omfång kan du definiera de behörigheter som du vill ge klienten.
tenantId sträng Identifierar klientorganisationen.
användare JSON Identifierar användare av ditt program. Det kan användas av ditt program för att identifiera dina användare med hjälp av Fluid Framework-målgruppen.
{ id: <user_id>, name: <user_name>, additionalDetails: { email: <email>, date: <date>, }, }
iat tal, en UNIX-tidsstämpel "Utfärdat vid" anger när autentiseringen för den här token inträffade.
exp tal, en UNIX-tidsstämpel Anspråket "exp" (förfallotid) identifierar förfallotiden på eller efter vilken JWT inte får godkännas för bearbetning. Tokens livslängd får inte vara längre än 1 timme.
Ver sträng Anger versionen av åtkomsttoken. Måste vara 1.0 .
jti sträng Valfritt. Anspråket "jti" (JWT ID) tillhandahåller en unik identifierare för JWT. Identifierarvärdet MÅSTE tilldelas på ett sätt som säkerställer att det finns en försumbar sannolikhet att samma värde oavsiktligt tilldelas till ett annat dataobjekt. Vi rekommenderar att du använder det här anspråket för att undvika fel på grund av användning av samma token för att skapa dokument.

En Azure Fluid Relay-exempeltoken

{ 
  "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] 

Hur kan du generera en Azure Fluid Relay-token?

Du kan använda npm-paketet jsonwebtoken och signera din token med den här metoden.

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>");
    }