Contrato de token do Azure Fluid Relay
As solicitações enviadas para o Azure Fluid Relay devem conter um token JWT no cabeçalho de autorização. Esse token deve ser assinado pela chave de locatário.
Declarações
Os JWTs (Token Web JSON) são divididos em três partes:
- Cabeçalho – fornece informações sobre como validar o token, incluindo informações sobre o tipo de token e como ele foi assinado.
- Conteúdo – contém todos os dados importantes sobre o usuário ou o aplicativo que está tentando chamar o serviço.
- Assinatura – é a matéria-prima usada para validar o token.
Cada parte é separada por um ponto (.) e codificada em Base64 separadamente.
Declarações de cabeçalho
Declaração | Formatar | Descrição |
---|---|---|
alg | string | O algoritmo usado para assinar o token. Por exemplo, "HS256" |
typ | string | Esse valor deve ser sempre "JWT". |
Declarações de conteúdo
Declaração | Formatar | Descrição |
---|---|---|
documentId | string | Gerado pelo serviço AFR (Azure Fluid Relay). Identifica o documento para o qual o token está sendo gerado. |
scope | string[] | Identifica as permissões exigidas pelo cliente no documento ou resumo. Para cada escopo, você pode definir as permissões que deseja dar ao cliente. |
tenantId | string | Identifica o locatário. |
usuário | JSON | Identifica os usuários do seu aplicativo. Ele pode ser usado pelo seu aplicativo para identificar seus usuários usando o Público do Fluid Framework.{ id: <user_id>, name: <user_name>, additionalDetails: { email: <email>, date: <date>, }, } |
iat | number, um carimbo de data/hora UNIX | "Emitido em" indica quando ocorreu a autenticação desse token. |
exp | number, um carimbo de data/hora UNIX | A declaração "exp" (hora de expiração) identifica a hora de expiração ou a hora após ela na qual o JWT não deve ser aceito para processamento. O tempo de vida do token não pode ser maior que 1 hora. |
ver | string | Indica a versão do token de acesso. Deve ser 1.0 . |
jti | string | Opcional. a declaração "jti" (ID do JWT) fornece um identificador exclusivo para o JWT. O valor do identificador DEVE ser atribuído de uma forma que garanta que haja uma probabilidade insignificante de que o mesmo valor seja acidentalmente atribuído a outro objeto de dados. Incentivamos você a usar essa declaração para evitar falhas devido ao uso do mesmo token para a criação de documentos. |
Um token do Azure Fluid Relay de exemplo
{
"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]
Como você pode gerar um token do Azure Fluid Relay?
Você pode usar o pacote npm jsonwebtoken e assinar o token usando esse 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>");
}