عقد رمز Azure Fluid Relay

يجب أن تحتوي الطلبات المرسلة إلى Azure Fluid Relay على رمز JWT المميز في عنوان التخويل. يجب توقيع هذا الرمز المميز بواسطة مفتاح المستأجر.

المطالبات

يتم تقسيم JWTs (JSON Web Tokens) إلى ثلاثة أجزاء:

  • العنوان - يوفر معلومات حول كيفية التحقق من صحة الرمز المميز، بما في ذلك معلومات حول نوع الرمز المميز وكيفية توقيعه.
  • Payload - يحتوي على جميع البيانات المهمة حول المستخدم أو التطبيق الذي يحاول الاتصال بالخدمة.
  • التوقيع - هو المادة الخام المستخدمة للتحقق من صحة الرمز المميز.

يتم فصل كل جزء بنقطة (.) وترميز Base64 بشكل منفصل.

مطالبات العنوان

المطلب التنسيق ‏‏الوصف
Alg سلسلة الخوارزمية المستخدمة لتوقيع الرمز المميز. على سبيل المثال، "HS256"
قياسي سلسلة يجب أن تكون هذه القيمة دائما "JWT".

مطالبات الحمولة

المطلب التنسيق ‏‏الوصف
documentId سلسلة تم إنشاؤه بواسطة خدمة Azure Fluid Relay (AFR). تعريف المستند الذي يتم إنشاء الرمز المميز له.
النطاق string[] يحدد الأذونات المطلوبة من قبل العميل في المستند أو الملخص. لكل نطاق، يمكنك تحديد الأذونات التي تريد منحها للعميل.
tenantId سلسلة يحدد المستأجر.
المستخدم JSON يحدد مستخدمي التطبيق الخاص بك. يمكن استخدامه من قبل التطبيق الخاص بك لتحديد المستخدمين باستخدام إطار عمل Fluid Audience.
{ id: <user_id>, name: <user_name>, additionalDetails: { email: <email>, date: <date>, }, }
iat رقم، طابع زمني UNIX تُشير عبارة "تم الإصدار في" إلى وقت حدوث المصادقة لهذا الرمز المميز.
exp رقم، طابع زمني UNIX تحدد مطالبة "exp" (وقت انتهاء الصلاحية) وقت انتهاء الصلاحية الذي يجب عدم قبول معيار JWT لإجراء معالجة أثناء سريان مفعوله أو بعد انتهاؤه. لا يمكن أن تكون مدة بقاء الرمز المميز أكثر من ساعة واحدة.
ver سلسلة تشير إلى إصدار الرمز المميز للوصول. يجب أن يكون 1.0 .
jti سلسلة اختياري. توفر مطالبة "jti" (معرّف معيار JWT) معرّف فريد لمعيار 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>");
    }