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