مفتاح التوقيع
لكل بيئة مفتاح توقيع JWT خاص بها. توقّع به خدمة Auth كل جلسة، وتتحقق به REST وStorage وRealtime وEdge Functions من الرموز. غيّره متى احتمل أنه تسرّب، مثلًا بعد أن لُصق في مكان ما أو غادر شخص كان يعرفه.
تغيير المفتاح
- افتح البيئة في لوحة الإدارة، ثم Sign-in settings.
- تحت Signing key اضغط Rotate signing key، ثم أكّد.
- انتظر حتى تظهر Rotated. يستغرق ذلك نحو دقيقة، وأطول إن كانت Realtime تعمل.
ما يتغير:
- يخرج كل من سجّل الدخول، على كل أجهزته: تنتهي جلساته ورموز التحديث الخاصة به. ويسجّل الدخول من جديد بالبريد وكلمة المرور نفسيهما.
- أي رمز صنعته بنفسك بالمفتاح القديم، مثل رمز
service_roleفي سكربت، يتوقف عن العمل. - تحصل Studio وEdge Functions وحدهما على رموز موقّعة بالمفتاح الجديد. وتُعاد Studio إن كانت تعمل.
ما لا يتغير:
- مفاتيح API العامة والسرية (publishable وsecret). ليست رموز JWT، فيبقى مفتاح تطبيقك كما هو ولا يحتاج إلى بناء جديد.
- المستخدمون والصفوف والملفات والسياسات وكلمات المرور.
قد تُرفض بعض الطلبات إلى هذه البيئة لثوانٍ قليلة بينما تُعاد Auth وREST. ولا تُمس البيئات الأخرى.
إن توقف التغيير في منتصفه، تعرض لوحة الإدارة Not finished. اضغط Rotate signing key مرة أخرى، أو أعد تشغيل صباربيز: يكتمل التغيير بالمفتاح الجديد نفسه.
عبر الواجهة البرمجية
curl -X POST -H "authorization: Bearer $TOKEN" https://your-console/management/v1/environments/$ENVIRONMENT/signing-key/rotateيعرض GET .../signing-key الحالة وموعد آخر تغيير. ولا يردّ أيٌّ منهما بالمفتاح نفسه أبدًا.
الحدود
- مفتاح واحد في كل وقت: يتوقف قبول المفتاح القديم فورًا، بلا فترة يعمل فيها الاثنان معًا.
- لا يغيّره إلا مالكو المنظمة ومديروها.
- النسخ الاحتياطية اليومية لا تحمل مفتاحًا، فاستعادة إحداها تُبقي المفتاح الحالي. أما تصدير الاستعادة فيحمل مفتاحًا: التصدير المأخوذ قبل التغيير يستعيد البيئة بالمفتاح القديم، فغيّره مرة أخرى بعد استعادة كهذه إن كان المفتاح القديم قد تسرّب.
يغيّر CI مفتاح بيئة على جهاز نظيف مع كل تغيير، ويتحقق من رفض الجلسة القديمة ورمز التحديث القديم ورمز service_role القديم، ومن أن تسجيل الدخول الجديد يعمل في كل مكان (الدليل).