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