Azure Fluid Relay 權杖合約
傳送至 Azure Fluid Relay 的要求應該在授權標頭中包含 JWT 權杖。 此權杖應該 由租使用者金鑰 簽署。
宣告
JWT (JSON Web Token) 分成三個部分:
- 標頭 - 提供有關如何驗證權杖的資訊,包括權杖類型及其簽署方式的相關資訊。
- Payload - 包含嘗試呼叫服務之使用者或應用程式的所有重要資料。
- 簽章 - 這是用來驗證權杖的原材料。
每個部分會以句號 (.) 分隔,並以 Base64 編碼分隔。
標頭宣告
索賠 | 格式 | 描述 |
---|---|---|
alg | string | 用來簽署權杖的演算法。 例如,「HS256」 |
typ | string | 此值應該一律為 「JWT」。 |
承載宣告
索賠 | 格式 | 描述 |
---|---|---|
documentId | string | 由 Azure Fluid Relay (AFR) 服務產生。 識別產生權杖的檔。 |
範圍 (scope) | string[] | 識別用戶端在檔或摘要上所需的許可權。 針對每個範圍,您可以定義您想要提供給用戶端的許可權。 |
tenantId | string | 識別租使用者。 |
使用者 | JSON | 識別應用程式的使用者。 應用程式可以使用它來識別使用者,方法是使用 流體架構物件 。{ id: <user_id>, name: <user_name>, additionalDetails: { email: <email>, date: <date>, }, } |
iat | number, a UNIX timestamp | 「已發出 At」表示何時發生此權杖的驗證。 |
exp | number, a UNIX timestamp | 「exp」 (到期時間) 宣告會識別在 JWT 無法接受處理之後的到期時間。 權杖存留期不能超過 1 小時。 |
ver | string | 指出存取權杖的版本。 必須是 1.0 。 |
jti | string | 選擇性。 「jti」 (JWT ID) 宣告會提供 JWT 的唯一識別碼。 識別碼值必須以確保不計其微的可能性,將相同的值意外指派給不同的資料物件的方式指派。 我們鼓勵您使用此宣告來避免因使用相同權杖來建立檔而失敗。 |
範例 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]
如何產生 Azure Fluid Relay 權杖?
您可以使用 jsonwebtoken npm 套件,並使用此方法簽署權杖。
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>");
}