Токен-контракт Azure Fluid Relay
Запросы, отправленные в Azure Fluid Relay, должны содержать токен JWT в заголовке авторизации. Этот маркер должен быть подписан ключом клиента.
Претензии
JWTs (веб-токены JSON) разделены на три части:
- Заголовок . Предоставляет сведения о том, как проверить маркер, включая сведения о типе токена и о том, как он был подписан.
- Полезные данные — содержит все важные данные о пользователе или приложении, пытающемся вызвать службу.
- Подпись содержит исходный материал для проверки маркера.
Каждая часть разделена точкой (.) и отдельно закодирована Base64.
Утверждения заголовка
Утверждение | Формат | Description |
---|---|---|
alg | строка | Алгоритм, используемый для подписи маркера. Например, "HS256" |
Тип | строка | Это значение всегда должно быть "JWT". |
Утверждения полезных данных
Утверждение | Формат | Description |
---|---|---|
documentId | строка | Создано службой Azure Fluid Relay (AFR). Определяет документ, для которого создается маркер. |
область | string[] | Определяет разрешения, необходимые клиенту в документе или сводке. Для каждого область можно определить разрешения, которые необходимо предоставить клиенту. |
tenantId | строка | Определяет клиент. |
Пользователь | JSON | Определяет пользователей приложения. Его можно использовать приложением для идентификации пользователей с помощью аудитории Fluid Framework.{ id: <user_id>, name: <user_name>, additionalDetails: { email: <email>, date: <date>, }, } |
iat | число, метка времени UNIX | Значение Issued At (Выпущено в) показывает, когда произошла проверка подлинности этого маркера. |
exp | число, метка времени UNIX | Утверждение exp (время окончания срока действия) указывает время окончания срока действия или время, начиная с которого маркер JWT не должен приниматься в обработку. Время существования токена не может превышать 1 час. |
ver | строка | Обозначает номер версии маркера доступа. Должно быть 1.0 . |
jti | строка | Необязательно. Утверждение jti (идентификатор маркера JWT) предоставляет уникальный идентификатор JWT. Значение идентификатора должно быть назначено таким образом, чтобы гарантировать, что существует незначимая вероятность того, что одно и то же значение будет случайно назначено другому объекту данных. Мы рекомендуем использовать это утверждение, чтобы избежать сбоев из-за использования одного маркера для создания документов. |
Пример маркера Ретранслятора Жидкости Azure
{
"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]
Как создать токен Ретранслятора Жидкости Azure?
Пакет npm jsonwebtoken можно использовать и подписать маркер с помощью этого метода.
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>");
}