Kontrakt tokenu Azure Fluid Relay

Požadavky odeslané do služby Azure Fluid Relay by měly obsahovat token JWT v autorizační hlavičce. Tento token by měl být podepsaný klíčem tenanta.

Žádosti

JWT (webové tokeny JSON) jsou rozdělené do tří částí:

  • Hlavička – poskytuje informace o tom, jak token ověřit, včetně informací o typu tokenu a způsobu jeho podepsání.
  • Datová část – obsahuje všechna důležitá data o uživateli nebo aplikaci, která se pokouší volat vaši službu.
  • Podpis – je surovina použitá k ověření tokenu.

Každá část je oddělená tečkou (.) a zvlášť kódovaným base64.

Deklarace identity hlaviček

Deklarace identity Formát Popis
Alg řetězec Algoritmus použitý k podepsání tokenu. Například HS256
typ řetězec Tato hodnota by měla být vždy JWT.

Deklarace identity datové části

Deklarace identity Formát Popis
documentId řetězec Generuje se službou Azure Fluid Relay (AFR). Identifikuje dokument, pro který se token generuje.
rozsah string[] Identifikuje oprávnění požadovaná klientem v dokumentu nebo souhrnu. Pro každý obor můžete definovat oprávnění, která chcete klientovi udělit.
tenantId řetězec Identifikuje tenanta.
Uživatel JSON Identifikuje uživatele vaší aplikace. Aplikace ji může použít k identifikaci uživatelů pomocí cílové skupiny fluid framework.
{ id: <user_id>, name: <user_name>, additionalDetails: { email: <email>, date: <date>, }, }
iat číslo, časové razítko systém UNIX Hodnota Vystavená na značí, kdy došlo k ověření tohoto tokenu.
exp číslo, časové razítko systém UNIX Deklarace "exp" (čas vypršení platnosti) identifikuje dobu vypršení platnosti, po které nesmí být JWT přijata ke zpracování. Životnost tokenu nemůže být delší než 1 hodinu.
Ver řetězec Označuje verzi přístupového tokenu. Musí být 1.0 .
jti řetězec Nepovinné. Deklarace identity jti (JWT ID) poskytuje jedinečný identifikátor JWT. Hodnota identifikátoru musí být přiřazena způsobem, který zajistí, že existuje zanedbatelná pravděpodobnost, že stejná hodnota bude omylem přiřazena jinému datovému objektu. Doporučujeme, abyste tuto deklaraci identity použili, abyste se vyhnuli chybám kvůli použití stejného tokenu pro vytvoření dokumentu.

Ukázkový token Azure Fluid Relay

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

Jak můžete vygenerovat token Azure Fluid Relay?

Pomocí této metody můžete použít balíček npm jsonwebtoken a podepsat token.

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