Contrato de token de Azure Fluid Relay

Las solicitudes enviadas a Azure Fluid Relay deben contener un token JWT en el encabezado de autorización. Este token debe estar firmado por la clave de inquilino.

Notificaciones

Los JWT (JSON Web Token) se dividen en tres partes:

  • Encabezado: proporciona información sobre cómo validar el token, incluida la información sobre el tipo de token y cómo fue firmado.
  • Carga: contiene todos los datos importantes sobre el usuario o la aplicación que está intentando llamar a su servicio.
  • Firma: es la materia prima utilizada para validar el token.

Cada parte se separa por un punto (.) y se codifica por separado en Base64.

Notificaciones de encabezado

Notificación Formato Descripción
alg cadena El algoritmo utilizado para firmar el token. Por ejemplo, "HS256"
typ cadena Este valor siempre debe ser "JWT".

Notificaciones de carga

Notificación Formato Descripción
documentId cadena Generado por el servicio Azure Fluid Relay (AFR). Identifica el documento para el que se genera el token.
scope string[] Identifica los permisos que requiere el cliente en el documento o resumen. Para cada ámbito, puede definir los permisos que desea conceder al cliente.
tenantId cadena Identifica el inquilino.
usuario JSON Identifica los usuarios de la aplicación. La aplicación puede usarla para identificar a los usuarios mediante la Audiencia de Fluid Framework.
{ id: <user_id>, name: <user_name>, additionalDetails: { email: <email>, date: <date>, }, }
iat numero, una marca de tiempo de UNIX La notificación "iat" (emitido a las) indica cuándo se produjo la autenticación de este token.
exp numero, una marca de tiempo de UNIX La notificación "exp" (fecha de expiración) identifica la hora de expiración en la que o después de la que el token JWT no debe ser aceptado para su procesamiento. La vigencia del token no puede ser superior a 1 hora.
ver cadena Indica la versión del token de acceso. Debe ser 1.0.
jti cadena Opcional. La notificación "jti" (Id. de JWT) proporciona un identificador único para el JWT. El valor del identificador se DEBE asignar de manera que se garantice que la probabilidad de que el mismo valor se asigne accidentalmente a un objeto de datos diferente sea insignificante. Le recomendamos que use esta notificación para evitar errores debidos al uso del mismo token para la creación de documentos.

Un token de ejemplo de 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] 

¿Cómo se puede generar un token de Azure Fluid Relay?

Puede usar el paquete NPM jsonwebtoken y firmar el token mediante este método.

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