Condividi tramite


Contratto token di Inoltro fluido di Azure

Le richieste inviate ad Inoltro fluido di Azure devono contenere un token JWT nell'intestazione dell'autorizzazione. Questo token deve essere firmato dalla chiave del tenant.

Richieste di rimborso

I token JWT (token WEB JSON) sono suddivisi in tre parti:

  • Intestazione : fornisce informazioni su come convalidare il token, incluse informazioni sul tipo di token e su come è stato firmato.
  • Payload : contiene tutti i dati importanti relativi all'utente o all'app che sta tentando di chiamare il servizio.
  • Firma: rappresenta il materiale non elaborato usato per convalidare il token.

Ogni parte è separata da un punto (.) e con codifica Base64 separatamente.

Attestazioni di intestazione

Richiesta di rimborso Formato Descrizione
alg stringa Algoritmo utilizzato per firmare il token. Ad esempio, "HS256"
Tipico stringa Questo valore deve essere sempre "JWT".

Attestazioni di payload

Richiesta di rimborso Formato Descrizione
documentId stringa Generato dal servizio AFR (Fluid Relay) di Azure. Identifica il documento per il quale viene generato il token.
ambito string[] Identifica le autorizzazioni richieste dal client nel documento o nel riepilogo. Per ogni ambito, è possibile definire le autorizzazioni da assegnare al client.
tenantId stringa Identifica il tenant.
utente JSON Identifica gli utenti dell'applicazione. Può essere usato dall'applicazione per identificare gli utenti usando fluid framework audience.
{ id: <user_id>, name: <user_name>, additionalDetails: { email: <email>, date: <date>, }, }
iat number, timestamp UNIX "Issued At" indica quando è avvenuta l'autenticazione per il token.
exp number, timestamp UNIX L'attestazione "exp" (expiration time) identifica l'ora di scadenza a partire dalla quale o successivamente alla quale il token JWT non deve essere accettato per l'elaborazione. La durata del token non può essere superiore a 1 ora.
ver stringa Indica la versione del token di accesso. Deve essere 1.0 .
jti stringa (Facoltativo). l'attestazione "jti" (JWT ID) fornisce un identificatore univoco per il token JWT. Il valore dell'identificatore DEVE essere assegnato in modo da garantire che vi sia una probabilità trascurabile che lo stesso valore venga assegnato accidentalmente a un oggetto dati diverso. È consigliabile usare questa attestazione per evitare errori dovuti all'utilizzo dello stesso token per la creazione di documenti.

Un token di inoltro fluido di Azure di esempio

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

Come è possibile generare un token di Inoltro fluido di Azure?

È possibile usare il pacchetto npm jsonwebtoken e firmare il token usando questo metodo.

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