Contrat de jeton Relais Azure Fluid

Les requêtes envoyées au Relais Azure Fluid doivent contenir un jeton JWT dans l’en-tête d'autorisation. Ce jeton doit être signé par la clé de locataire.

Sinistres

Les jetons JWT (jetons Web JSON) comprennent trois parties :

  • En-tête : fournit des informations sur la façon de valider le jeton, notamment des informations sur le type du jeton et la façon dont il a été signé.
  • Charge utile : contient toutes les données importantes concernant l’utilisateur ou l’application qui tente d’appeler votre service.
  • Signature : ressource de base utilisée pour valider le jeton.

Chaque partie est séparée par un point (.) et encodée séparément en base64.

Revendications de l’en-tête

Revendication Format Description
alg string L’algorithme utilisé pour signer le jeton. Par exemple, « HS256 »
Type string Cette valeur doit toujours être « JWT ».

Revendications de la charge utile

Revendication Format Description
documentId string Généré par le service Relais Azure Fluid (AFR). Identifie le document pour lequel le jeton est généré.
scope string[] Identifie les autorisations requises par le client sur le document ou le résumé. Pour chaque étendue, vous pouvez définir les autorisations que vous souhaitez donner au client.
tenantId string Identifie le locataire.
utilisateur JSON Identifie les utilisateurs de votre application. Il peut être utilisé par votre application pour identifier vos utilisateurs à l’aide de Fluid Framework Audience.
{ id: <user_id>, name: <user_name>, additionalDetails: { email: <email>, date: <date>, }, }
iat nombre, un horodatage UNIX « Issued At » (Délivré le) indique quand l'authentification de ce jeton a eu lieu.
exp nombre, un horodatage UNIX La revendication « exp » (délai d’expiration) indique le délai d’expiration après lequel le JWT ne doit pas être accepté pour traitement. La durée de vie du jeton ne doit pas dépasser 1 heure.
ver string Indique la version du jeton d’accès. Doit être 1.0.
jti string facultatif. La revendication « JTI » (ID JWT) fournit un identificateur unique pour le jeton JWT. La valeur de l’identificateur DOIT être attribuée de manière à garantir qu’il y a une probabilité négligeable que la même valeur soit affectée par accident à un objet de données différent. Nous vous encourageons à utiliser cette revendication pour éviter les échecs dus à l’utilisation du même jeton pour la création de documents.

Un exemple de contrat de jeton Relais Azure Fluid

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

Comment générer un jeton Relais Azure Fluid ?

Vous pouvez utiliser le package npm jsonwebtoken et signer votre jeton à l’aide de cette méthode.

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