Kontrak token Azure Fluid Relay
Permintaan yang dikirim ke Azure Fluid Relay harus berisi token JWT di header otorisasi. Token ini harus ditandatangani oleh kunci penyewa.
Klaim
JWT (JSON Web Token) dibagi menjadi tiga bagian:
- Header - Menyediakan informasi tentang cara memvalidasi token, termasuk informasi tentang jenis token dan cara token ditandatangani.
- Payload - Berisi semua data penting tentang pengguna atau aplikasi yang mencoba menghubungi layanan Anda.
- Tanda tangan - Apakah bahan baku digunakan untuk memvalidasi token.
Setiap bagian dipisahkan oleh titik (.) dan secara terpisah didekodekan dengan Base64.
Klaim header
Klaim | Format | Deskripsi |
---|---|---|
alg | string | Algoritme yang digunakan untuk menandatangani token. Misalnya, "HS256" |
typ | string | Nilai ini harus selalu berupa "JWT." |
Klaim payload
Klaim | Format | Deskripsi |
---|---|---|
documentId | string | Dihasilkan oleh layanan Azure Fluid Relay (AFR). Mengidentifikasi dokumen yang tokennya sedang dibuat. |
cakupan | string[] | Mengidentifikasi izin yang diperlukan oleh klien pada dokumen atau ringkasan. Untuk setiap cakupan, Anda dapat menentukan izin yang ingin Anda berikan kepada klien. |
tenantId | string | Mengidentifikasi penyewa. |
pengguna | JSON | Mengidentifikasi pengguna aplikasi Anda. Ini dapat digunakan oleh aplikasi Anda untuk mengidentifikasi pengguna Anda dengan menggunakan Audiens Fluid Framework.{ id: <user_id>, name: <user_name>, additionalDetails: { email: <email>, date: <date>, }, } |
iat | nomor, tanda waktu UNIX | "Issued At" (Dikeluarkan Pada) menunjukkan kapan autentikasi untuk token ini terjadi. |
exp | nomor, tanda waktu UNIX | Klaim "exp" (waktu kedaluwarsa) mengidentifikasi waktu kedaluwarsa yang pada atau setelahnya JWT tidak boleh diterima untuk pemrosesan. Masa pakai token tidak bisa lebih dari 1 jam. |
ver | string | Menunjukkan versi token akses. Harus berupa 1.0 . |
jti | string | Opsional. Klaim "jti" (ID JWT) memberi pengidentifikasi unik untuk JWT. Nilai pengidentifikasi HARUS ditetapkan dengan cara yang memastikan bahwa ada kemungkinan yang dapat diabaikan bahwa nilai yang sama akan secara tidak sengaja ditetapkan ke objek data yang berbeda. Kami mendorong Anda untuk menggunakan klaim ini guna menghindari kegagalan karena penggunaan token yang sama untuk pembuatan dokumen. |
Contoh 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]
Bagaimana Anda dapat membuat token Azure Fluid Relay?
Anda dapat menggunakan paket npm jsonwebtoken dan menandatangani token menggunakan metode ini.
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>");
}