الويب هو منصة تطبيقات فريدة من نوعها. ويمكن الوصول إلى التطبيقات التي تم إنشاؤها باستخدامها على الفور من أي نظام تشغيل بدون الحاجة إلى إجراء أي تغييرات على الرموز أو تجميعها. عندما ينتقل المستخدم إلى تطبيقك، سيحصل دائمًا على أحدث إصدار. وهي قابلة للتثبيت ويمكن استخدامها بلا اتصال بالإنترنت، كما أنّها تتضمّن ميزات متعدّدة، ويمكن مشاركتها بسهولة من خلال رابط. يمكنك إنشاء تطبيق ويب، وسيعمل في كل مكان.
بما أنّ الويب يهدف إلى توفير الأمان والحماية تلقائيًا، يجب أن يكون نموذج الأمان الخاص به محافظًا جدًا. يجب أن تكون أي إمكانات جديدة تتم إضافتها آمنة بحيث لا يمكن للمستخدم العادي أن يعثر عليها عن طريق الخطأ من خلال عنوان URL. نطلق على نموذج الأمان هذا اسم الوصول إلى البيانات من خلال الويب. على الرغم من أنّ هذا الإجراء مفيد للعديد من التطبيقات ويمكن تعزيز أمانه باستخدام سياسات أمان المحتوى والعزل بين المصادر، إلا أنّه لا يناسب جميع حالات الاستخدام. هناك عدد من واجهات برمجة التطبيقات المهمة والفعّالة جدًا، مثل Direct Sockets و Controlled Frame، التي يحتاج إليها المطوّرون، ولا يمكن توفير مستوى أمان كافٍ لها على الويب.
ولا تتوفّر حاليًا في هذه التطبيقات إمكانية إنشاء المحتوى على الويب. بالنسبة إلى البعض الآخر، قد لا يكون نموذج أمان الويب محافظًا بما يكفي، وقد لا يوافقون على افتراض أنّ الخادم جدير بالثقة، بل يفضّلون التطبيقات المستقلة الموقّعة والمقسّمة إلى إصدارات منفصلة. لذلك، نحتاج إلى نموذج أمان جديد عالي الموثوقية. توفّر "تطبيقات الويب المعزولة" (IWA) نموذج تطبيقات معزولًا ومجمّعًا ومحدّد الإصدار وموقّعًا وموثوقًا به، وهو يستند إلى منصة الويب الحالية، وذلك بهدف إتاحة هذه الميزات للمطوّرين.
مجموعة من مستويات الثقة على الويب
يمكنك التفكير في الأمان والإمكانات على الويب من منظور طيف.

يحتوي الويب العابر، على اليمين، على نموذج أمان بأقل مستوى من الثقة لأنّه يجب أن يكون في متناول الجميع، وبالتالي لديه أقل إذن بالوصول إلى نظام المستخدم. تحظى تطبيقات الويب المثبّتة على المتصفّح بثقة أكبر قليلاً، ويمكن دمجها بشكل أعمق في نظام المستخدم. يمكن للمستخدمين بشكل عام التبديل بين إصدارات التطبيقات التي يتم تشغيلها من الويب والإصدارات المثبَّتة على المتصفّح بدون أي مشاكل.
وهناك أيضًا تطبيقات الويب المعزولة التي تتطلّب مستوى أمان عاليًا.
تعمل هذه التطبيقات وتبدو وكأنّها تطبيقات أصلية، ويمكنها الوصول إلى عمليات دمج عميقة مع النظام وإمكانات فعّالة. ولا يمكن للمستخدمين التنقّل بينها وبين drive-by-web. إذا كنت بحاجة إلى هذا المستوى من الأمان أو هذه الإمكانات، لن تتمكّن من التراجع.
عند محاولة تحديد مستوى الأمان الذي يجب أن تستهدفه، ننصحك باختيار نموذج الأمان الأقل موثوقية الذي يمكنك استخدامه، مثل تطبيق الويب التقدّمي، لأنّ ذلك سيساعدك في الوصول إلى أكبر عدد من المستخدمين، ويتطلّب منك إدارة أقل عدد من المشاكل المتعلّقة بالأمان، كما أنّه سيكون الأكثر مرونة للمطوّرين والمستخدمين.
تصميم آمن
توفّر "تطبيقات الويب المعزولة" نموذج أمان موثوقًا به بدرجة كبيرة لتطبيقات الويب. ولكن لتفعيل هذه الميزة، يجب إعادة التفكير في بعض الافتراضات التي يضعها الويب بشأن الثقة. لم يعُد بالإمكان الوثوق بشكل صريح في اللبنات الأساسية للويب، مثل الخوادم ونظام أسماء النطاقات. تصبح متجهات الهجوم التي قد تبدو أكثر صلة بالتطبيقات الأصلية مهمة فجأة. لذلك، للاستفادة من نموذج الأمان الجديد عالي الموثوقية الذي توفّره تطبيقات IWA، يجب تجميع تطبيقات الويب وعزلها وتأمينها.
مجمَّعة
لا يمكن عرض الصفحات والمواد الخاصة بتطبيقات الويب المعزولة من الخوادم المباشرة أو جلبها عبر الشبكة مثل تطبيقات الويب العادية. بدلاً من ذلك، للوصول إلى نموذج الأمان الجديد عالي الثقة، يجب أن تحزّم تطبيقات الويب جميع الموارد التي تحتاجها لتشغيلها في Signed WebBundle. تجمع حِزم الويب الموقّعة جميع الموارد المطلوبة لتشغيل موقع إلكتروني وتضمّنها في ملف .swbn واحد، ثم تربطها بكتلة سلامة.
يتيح ذلك تنزيل تطبيق الويب بالكامل بشكل آمن، ويمكن حتى مشاركته أو تثبيته بدون اتصال بالإنترنت.
ومع ذلك، يطرح ذلك مشكلة في التحقّق من صحة رمز الموقع الإلكتروني، لأنّ مفاتيح بروتوكول أمان طبقة النقل (TLS) تتطلّب الاتصال بالإنترنت لتعمل. بدلاً من مفاتيح TLS، يتم توقيع IWAs باستخدام مفتاح يمكن الاحتفاظ به بشكل آمن بلا اتصال بالإنترنت. والخبر السار هو أنّه إذا تمكّنت من جمع كل ملفات الإنتاج في مجلد، يمكنك تحويلها إلى IWA بدون إجراء تعديلات كثيرة.
إنشاء مفاتيح التوقيع
مفاتيح التوقيع هي أزواج مفاتيح Ed25519 أو ECDSA P-256، ويتم استخدام المفتاح الخاص لتوقيع الحزمة والمفتاح العام للتحقّق من الحزمة. يمكنك استخدام OpenSSL لإنشاء مفتاح Ed25519 أو ECDSA P-256 وتشفيره:
# Generate an unencrypted Ed25519 key
openssl genpkey -algorithm Ed25519 -out private_key.pem
# or generate an unencrypted ECDSA P-256 key
openssl ecparam -name prime256v1 -genkey -noout -out private_key.pem
# Encrypt the generated key. This will ask for a passphrase, make sure to use a strong one
openssl pkcs8 -in private_key.pem -topk8 -out encrypted_key.pem
# Delete the unencrypted key
rm private_key.pem
تتضمّن مفاتيح التوقيع غرضًا ثانويًا أيضًا. بما أنّ النطاق قد يكون عرضة لفقدان السيطرة، مثل الخادم، لا يمكن استخدامه لتحديد هوية تطبيق الويب المثبَّت. بدلاً من ذلك، يتم تحديد تطبيق الويب المعزول من خلال المفتاح العام للحزمة، وهو جزء من توقيعها ومرتبط بالمفتاح الخاص. هذا تغيير كبير في طريقة عمل الويب المستند إلى التثبيت من المتصفح، لذا بدلاً من استخدام HTTPS، تستخدم تطبيقات الويب المثبَّتة مخططًا جديدًا أيضًا:
isolated-app://.
تجميع تطبيقك
بعد توفُّر مفتاح التوقيع، حان الوقت لتجميع تطبيق الويب. ويمكنك استخدام حِزم NodeJS الرسمية لتجميع تطبيقات الويب المعزولة ثم توقيعها (تتوفّر أيضًا أدوات سطر الأوامر Go). أولاً، استخدِم حزمة wbn، مع الإشارة إلى المجلد الذي يحتوي على جميع ملفات الإصدار العلني لتطبيق IWA (هنا dist) لتجميعها في حزمة غير موقَّعة:
npx wbn --dir dist
سيؤدي ذلك إلى إنشاء حزمة ويب غير موقَّعة لهذا الدليل في out.wbn. بعد إنشاء الحزمة، استخدِم مفتاح Ed25519 أو ECDSA P-256 المشفّر الذي أنشأته سابقًا لتوقيعها باستخدام wbn-sign:
npx wbn-sign -i out.wbn -k encrypted_key.pem -o signed.swbn
سيؤدي ذلك إلى إنشاء حزمة ويب موقَّعة من حزمة ويب غير موقَّعة باسم
signed.swbn. بعد التوقيع، ستعرض الأداة أيضًا معرّف حزمة الويب ومصدر تطبيق الويب المعزول. مصدر تطبيق الويب المعزول هو الطريقة التي يتم بها تحديد تطبيق الويب المعزول في المتصفّح.
Web Bundle ID: ggx2sheak3vpmm7vmjqnjwuzx3xwot3vdayrlgnvbkq2mp5lg4daaaic
Isolated Web App Origin: isolated-app://ggx2sheak3vpmm7vmjqnjwuzx3xwot3vdayrlgnvbkq2mp5lg4daaaic/
إذا كنت تستخدم Webpack أو Rollup أو أداة تتوافق مع مكوّناتهما الإضافية (مثل Vite)، يمكنك استخدام أحد المكوّنات الإضافية الخاصة بأدوات تجميع الحِزم (Webpack أو Rollup) التي تغلف هذه الحِزم بدلاً من استدعائها مباشرةً. سيؤدي ذلك إلى إنشاء حِزمة موقَّعة كنتيجة لعملية الإنشاء.
اختبار تطبيقك
يمكنك اختبار تطبيق الويب المعزول (IWA) بإحدى طريقتَين: إما عن طريق تشغيل خادم التطوير من خلال وكيل المطوّرين المضمّن في Chrome لتطبيقات الويب المعزولة، أو عن طريق تثبيت تطبيق الويب المعزول المجمَّع. لإجراء ذلك، يجب استخدام الإصدار 120 من Chrome أو ChromeOS أو الإصدارات الأحدث، وتفعيل علامات تطبيقات الويب المعزولة، وتثبيت تطبيقك من خلال "الأجزاء الداخلية لتطبيق الويب" في Chrome:
- تفعيل العلامة
chrome://flags/#enable-isolated-web-app-dev-mode - اختبِر تطبيق الويب المثبَّت من خلال الانتقال إلى صفحة "تفاصيل تطبيق الويب" في Chrome على
chrome://web-app-internals
بعد الانتقال إلى صفحة "تفاصيل تطبيق الويب"، لديك خياران: Install IWA with Dev
Mode Proxy أو Install IWA from Signed Web Bundle.
إذا كنت تثبّت التطبيق من خلال خادم وكيل في "وضع التطوير"، يمكنك تثبيت أي عنوان URL، بما في ذلك المواقع الإلكترونية التي يتم تشغيلها من خادم تطوير محلي، كتطبيق ويب مثبَّت، بدون تجميعها، بشرط أن تستوفي متطلبات التثبيت الأخرى لتطبيقات الويب المثبَّتة. بعد التثبيت، ستتم إضافة تطبيق ويب مثبَّت (IWA) لعنوان URL هذا إلى نظامك مع تطبيق سياسات الأمان والقيود الصحيحة، وسيتم توفير إمكانية الوصول إلى واجهات برمجة التطبيقات الخاصة بتطبيقات الويب المثبَّتة فقط. وسيتم تعيين معرّف عشوائي له. تتوفّر "أدوات مطوّري البرامج في Chrome" أيضًا في هذا الوضع لمساعدتك في تصحيح أخطاء تطبيقك. إذا كنت تثبّت من حزمة ويب موقَّعة، عليك تحميل حزمة IWA الموقَّعة والمجمَّعة، وسيتم تثبيتها كما لو أنّ أحد المستخدمين النهائيين قد نزّلها.
في صفحة "تفاصيل تطبيقات الويب"، يمكنك أيضًا فرض عمليات التحقّق من التحديثات لأي تطبيقات تم تثبيتها من خلال Dev Mode Proxy أو من حِزمة ويب موقَّعة لاختبار عملية التحديث أيضًا.
مَعزولة
الثقة هي أساس تطبيقات الويب المعزولة. يبدأ ذلك بطريقة تشغيلها. تختلف النماذج الذهنية للمستخدمين بشأن ما يمكن للتطبيق فعله وما يجب أن يكون قادرًا على فعله، وذلك حسب ما إذا كان يتم تشغيله في متصفّح أو في نافذة مستقلة، مع الاعتقاد بشكل عام بأنّ التطبيقات المستقلة لديها إمكانية وصول أكبر وهي أكثر فعالية. بما أنّ تطبيقات الويب المعزولة يمكنها الوصول إلى واجهات برمجة التطبيقات التي تتطلّب مستوى ثقة عاليًا، يجب تشغيلها في نافذة مستقلة لتتوافق مع هذا النموذج الذهني. ويفصلها ذلك بصريًا عن المتصفّح. لكنّها تتجاوز الفصل المرئي.
تعمل "تطبيقات الويب المعزولة" على بروتوكول منفصل عن المواقع الإلكترونية التي تعمل داخل المتصفح (isolated-app مقابل http أو https)، ما يعني أنّ كل تطبيق ويب معزول منفصل تمامًا عن المواقع الإلكترونية التي تعمل داخل المتصفح، حتى لو كانت من إنشاء الشركة نفسها، وذلك بفضل سياسة المصدر الأوحد.
يتم أيضًا فصل مساحة تخزين التطبيقات المثبَّتة على الويب عن بعضها. ويضمن ذلك معًا عدم تسرّب المحتوى من مصادر متعددة إلى "تطبيقات الويب المعزولة" المختلفة أو بين "تطبيقات الويب المعزولة" وسياق التصفّح العادي للمستخدم.
ومع ذلك، لا تفيد عملية العزل أو التجميع والتوقيع على رمز الموقع الإلكتروني في إثبات الثقة إذا كان بإمكان تطبيق الويب المثبَّت تنزيل أي رمز وتشغيله بعد التثبيت. لضمان ذلك مع السماح في الوقت نفسه لتطبيقات الويب المثبَّتة بالاتصال بمواقع إلكترونية أخرى للحصول على المحتوى، تفرض تطبيقات الويب المثبَّتة مجموعة صارمة من سياسات أمان المحتوى:
- لا يسمح هذا الخيار إلا بتشغيل JavaScript من الحزمة، ولكنّه يسمح بتشغيل Wasm بغض النظر عن مصدره.
(
script-src) - تسمح هذه السمة لرموز JavaScript بجلب البيانات من نطاقات آمنة غير محلية ومتعددة المصادر، والاتصال بنقاط نهاية WebSocket وWebTransport، وعناوين URL الخاصة بالكائنات الثنائية الكبيرة (blob) والبيانات (data) (
connect-src) - توفير الحماية من هجمات حقن النصوص البرمجية على المواقع الإلكترونية (XSS) المستنِدة إلى نموذج العناصر في المستند (DOM) من خلال تنظيم كيفية استخدام دوال تعديل نموذج العناصر في المستند (
require-trusted-types-for) - يسمح بعرض إطارات وصور ومحتوى صوتي وفيديوهات من أي نطاق HTTPS
(
frame-src,img-src,media-src) - يسمح بالخطوط من الحزمة والنقاط الثنائية الكبيرة(
font-src) - السماح باستخدام CSS المضمّن أو CSS من الحزمة
(
style-src) - لا يمكن استخدام عناصر
<object>و<embed>و<base>(object-srcوbase-uri) - يسمح فقط باستخدام الموارد من الحزمة لأي طلبات أخرى مشمولة بسياسة CSP
(
default-src)
Content-Security-Policy: script-src 'self' 'wasm-unsafe-eval';
connect-src 'self' https: wss: blob: data:;
require-trusted-types-for 'script';
frame-src 'self' https: blob: data:;
img-src 'self' https: blob: data:;
media-src 'self' https: blob: data:;
font-src 'self' blob: data:;
style-src 'self' 'unsafe-inline';
object-src 'none';
base-uri 'none';
default-src 'self';
لا تكفي سياسات أمان المحتوى هذه للحماية الكاملة من الرموز البرمجية التابعة لجهات خارجية والتي قد تكون ضارة. تكون تطبيقات الويب المثبَّتة أيضًا معزولة من مصادر متعددة، ويتم ضبط العناوين للحدّ من قدرة الموارد التابعة لجهات خارجية على التأثير فيها:
- لا تسمح إلا بالموارد من الحزمة أو الموارد المتعدّدة المصادر التي تم تحديدها بشكل صريح على أنّها تتوافق مع CORS من خلال ضبط عنوان سياسة تضمين الموارد من مصادر خارجية (CORP) أو السمة
crossorigin. (Cross-Origin-Embedder-Policy) - عدم السماح بطلبات مشتركة المصدر لا تستخدم CORS
(
Cross-Origin-Resource-Policy) - عزل سياق التصفّح عن المستندات الواردة من مصادر متعددة في عملية منفصلة، ما يمنع الإشارات إلى window.opener وإمكانية الوصول إلى الكائنات العامة
(
Cross-Origin-Opener-Policy) - منع تضمين الموقع الإلكتروني في إطار أو إطار iframe
(CSP,
frame-ancestors)
Cross-Origin-Opener-Policy: same-origin
Cross-Origin-Embedder-Policy: require-corp
Cross-Origin-Resource-Policy: same-origin
Content-Security-Policy: frame-ancestors 'self'
حتى مع فرض هذه القيود، هناك هجوم محتمل آخر تحمي منه IWAs، وهو هجمات كسر التسلسل. يحدث هجوم كسر التسلسل عندما يحاول محتوى ضار تابع لجهة خارجية تقديم تجربة مستخدم مربكة وربما قابلة للاستغلال من خلال الانتقال إلى صفحة بطريقة غير متوقعة، مثل الانتقال مباشرةً إلى صفحة إعدادات داخلية. تمنع تطبيقات الويب المثبَّتة ذلك من خلال عدم السماح بالربط بأي صفحات داخلية من مواقع إلكترونية خارجية، والسماح فقط بفتح التطبيقات من خلال الانتقال إلى نقاط دخول محددة جيدًا، مثل start_url أو معالج البروتوكول أو هدف المشاركة أو من خلال معالج التشغيل.
مُغلق
تقدّم عملية التغليف والعزل مجموعة من الضمانات بشأن ما يُسمح بتشغيله ومصدره، ولكن الطبيعة الديناميكية للأذونات على الويب تعني أنّها وحدها لا يمكنها ضمان أنّ تطبيق الويب يستخدم فقط الإمكانات التي يحتاجها. بما أنّ الإمكانات المختلفة لها اعتبارات أمان مختلفة، سيريد المستخدم أو المشرف مراجعة الأذونات التي يمكن أن تستخدمها تطبيقات الويب المثبَّتة، تمامًا كما يمكنهم إجراء ذلك مع التطبيقات الأصلية الأخرى، مثل تطبيقات Android وiOS، قبل تثبيت تطبيق أو تحديثه.
ولتسهيل ذلك، تحظر "تطبيقات الويب المعزولة" جميع طلبات الأذونات تلقائيًا.
يمكن للمطوّرين بعد ذلك الموافقة على الإذن الذي يحتاجون إليه من خلال إضافة حقل permissions_policy إلى بيان تطبيق الويب. يحتوي هذا الحقل على أزواج مفتاح/قيمة لتوجيهات سياسة الأذونات وقوائم السماح الخاصة بسياسة الأذونات لكل إذن قد يطلبه تطبيق IWA أو أي إطار فرعي، مثل إطار خاضع للتحكّم أو iframe. لا تؤدي إضافة إذن هنا إلى منحه تلقائيًا، بل تجعله متاحًا ليتم طلبه عند تقديم طلب للحصول على هذه الإمكانية.
لنفترض أنّك بصدد إنشاء تطبيق ويب مثبَّت لتتبُّع أسطول من المركبات كمثال. قد تحتاج إلى تطبيق ويب مثبت لطلب الموقع الجغرافي للمستخدم، كما أنّ الخريطة المضمّنة تحتاج إلى إذن للوصول إلى الموقع الجغرافي أيضًا. قد تحتاج أيضًا إلى أن يتمكّن أي موقع إلكتروني مضمّن من عرض المحتوى بملء الشاشة لتوفير تجربة غامرة للمستخدم. لإجراء ذلك، عليك إعداد سياسة الأذونات التالية في بيان تطبيق الويب:
"permissions_policy": {
"geolocation": [ "self", "https://map.example.com" ],
"fullscreen": [ "*" ]
}
بما أنّ حِزم WebBundle يمكنها أيضًا تحديد عناوين Permissions Policy، لن يُسمح إلا بالأذونات المحدّدة في كليهما، ولن يُسمح إلا بالمصادر في القوائم المسموح بها والموجودة في كليهما.
مُسَمّاة ومُصنّفة حسب الإصدار
تعتمد تطبيقات الويب العادية على اسم النطاق لتعريف نفسها للمستخدمين، ويمكن تعديلها من خلال تغيير الرمز الذي يتم عرضه في هذا النطاق. ولكن بسبب قيود الأمان المفروضة على تطبيقات Isolated Web Apps، يجب التعامل مع الهوية والتحديثات بشكل مختلف. وكما هو الحال مع تطبيقات الويب التقدّمية، تحتاج تطبيقات الويب المنعزلة إلى ملف بيان تطبيق الويب لتعريف المستخدمين بها.
بيان تطبيق الويب
تتشارك "تطبيقات الويب المعزولة" خصائص البيان الرئيسية نفسها في بيان تطبيق الويب الخاص بها كما هو الحال في تطبيقات الويب التقدّمية، مع بعض الاختلافات الطفيفة. على سبيل المثال، يختلف عمل display قليلاً، إذ يتم فرض عرض browser وminimal-ui على شكل minimal-ui، ويتم فرض عرض fullscreen وstandalone على شكل standalone (تعمل خيارات display_override الإضافية على النحو المتوقّع).
بالإضافة إلى ذلك، هناك حقلان آخران يجب تضمينهما، وهما version وupdate_manifest_url:
version: مطلوبة لتطبيقات الويب المعزولة. سلسلة تتألف من عدد صحيح واحد أو أكثر مفصول بنقطة (.). يمكن أن يكون رقم الإصدار بسيطًا، مثل1أو2أو3أو غير ذلك، أو معقّدًا، مثل SemVer (1.2.3). يجب أن يتطابق رقم الإصدار مع التعبير العادي^(\d+.?)*\d$.update_manifest_url: حقل اختياري، ولكن يُنصح باستخدامه، ويشير إلى عنوان URL بتنسيق HTTPS (أوlocalhostللاختبار) يمكن من خلاله استرداد بيان تحديث لتطبيق ويب.
قد يبدو بيان تطبيق الويب البسيط لتطبيق ويب معزول على النحو التالي:
{
"name": "IWA Kitchen Sink",
"version": "0.1.0",
"update_manifest_url": "https://example.com/updates.json",
"start_url": "/",
"icons": [
{
"src": "/images/icon.png",
"type": "image/png",
"sizes": "512x512",
"purpose": "any"
},
{
"src": "/images/icon-mask.png",
"type": "image/png",
"sizes": "512x512",
"purpose": "maskable"
}
]
}
بيان تحديث تطبيق الويب
بيان تحديث تطبيق الويب هو ملف JSON يصف كل إصدار من تطبيق ويب معيّن. يحتوي عنصر JSON على حقل واحد مطلوب، وهو version،
وهو عبارة عن قائمة بعناصر تحتوي على version وsrc وchannels:
version: رقم إصدار التطبيق، وهو مطابق لحقلversionفي بيان تطبيق الويبsrc- عنوان URL يستخدم HTTPS (أوlocalhostللاختبار) ويشير إلى حِزمة التطبيق المستضافة لهذا الإصدار (الملف.swbn). تكون عناوين URL النسبية مرتبطة بملف بيان تحديث تطبيق الويب.-
channels: قائمة بالسلاسل لتحديد قناة التحديث التي يشكّل هذا الإصدار جزءًا منها. يتم استخدام قناةdefaultخاصة لوصف القناة الأساسية التي سيتم استخدامها في حال عدم اختيار أي قناة أخرى.
يمكنك أيضًا تضمين الحقل channels، وهو عبارة عن عنصر من معرّفات القنوات مع السمة الاختيارية name لكل معرّف لتوفير اسم يمكن قراءته (بما في ذلك قناة default). تستخدم القناة التي لا تتضمّن السمة name أو غير المضمّنة في العنصر channels معرّفها كاسم لها.
قد يبدو بيان التحديث البسيط على النحو التالي:
{
"versions": [
{
"version": "5.2.17",
"src": "https://cdn.example.com/app-package-5.2.17.swbn",
"channels": ["next", "5-lts", "default"]
},
{
"version": "5.3.0",
"src": "v5.3.0/package.swbn",
"channels": ["next", "default"]
},
{
"version": "5.3.1",
"src": "v5.3.1/package.swbn",
"channels": ["next"]
},
],
"channels": {
"default": {
"name": "Stable"
},
"5-lts": {
"name": "5.x Long-term Stable"
}
}
}
في هذا المثال، هناك ثلاث قنوات: default التي سيتم تصنيفها على أنّها Stable، و5-lts التي سيتم تصنيفها على أنّها 5.x Long-term Stable، وnext التي سيتم تصنيفها على أنّها next. إذا كان المستخدم في القناة 5-lts، سيحصل على الإصدار 5.2.17، وإذا كان في القناة default، سيحصل على الإصدار 5.3.0، وإذا كان في القناة next، سيحصل على الإصدار 5.3.1.
يمكن استضافة بيانات تحديث تطبيقات الويب على أي خادم. يتم التحقّق من توفّر تحديثات كل 4 إلى 6 ساعات.
يديرها المشرف
في الإصدار الأوّلي، لن يتمكّن المشرفون من تثبيت "تطبيقات الويب المعزولة" إلا على أجهزة Chromebook المُدارة من خلال Chrome Enterprise، وذلك من خلال لوحة المشرف.
للبدء، انتقِل من "لوحة المشرف " إلى الأجهزة > Chrome > التطبيقات والإضافات > المستخدمون والمتصفّحات. تتيح لك علامة التبويب هذه إضافة تطبيقات وإضافات من "سوق Chrome الإلكتروني" وGoogle Play والويب للمستخدمين في جميع أنحاء مؤسستك. يمكنك إضافة عناصر من خلال فتح زر الإضافة العائم الأصفر (+) في أسفل يسار الشاشة واختيار نوع العنصر الذي تريد إضافته.
عند فتحها، سيظهر رمز مربّع داخل مربّع، مع تصنيف إضافة تطبيق ويب معزول. سيؤدي النقر عليه إلى فتح نافذة مشروطة لإضافة تطبيق ويب معزول إلى وحدتك التنظيمية. لإجراء ذلك، ستحتاج إلى معلوماتَين: معرّف حزمة الويب الخاص بتطبيق الويب المعزول (الذي يتم إنشاؤه من المفتاح العام لتطبيقك ويظهر بعد تجميع التطبيق وتوقيعه) وعنوان URL لملف بيان تحديث تطبيق الويب المعزول. بعد التثبيت، ستتوفّر لك مجموعة الخيارات العادية في "لوحة المشرف" لإدارتها:
- سياسة التثبيت: تحدّد طريقة تثبيت تطبيق الويب التقدّمي، سواء كان سيتم فرض تثبيته أو فرض تثبيته وتثبيته في رف ChromeOS أو منع تثبيته.
- التشغيل عند تسجيل الدخول: تحدّد هذه السياسة طريقة تشغيل تطبيق الويب المعزول، سواء بالسماح للمستخدم بتشغيله يدويًا، أو بفرض تشغيل تطبيق الويب المعزول عند تسجيل المستخدم الدخول مع السماح له بإغلاقه، أو بفرض تشغيله عند تسجيل المستخدم الدخول ومنع إغلاقه.
بعد الحفظ، سيتم تثبيت التطبيق في المرة التالية التي يتم فيها تطبيق تحديث للسياسة على أجهزة Chromebook في تلك الوحدة التنظيمية. بعد التثبيت، سيتحقّق جهاز المستخدِم من توفّر التحديثات من بيان تحديث تطبيق الويب كل 4 إلى 6 ساعات.
بالإضافة إلى فرض تثبيت تطبيقات الويب المعزولة، يمكنك أيضًا منح بعض الأذونات تلقائيًا لهذه التطبيقات بالطريقة نفسها التي يمكنك اتّباعها مع تطبيقات الويب الأخرى. لإجراء ذلك، انتقِل إلى
الأجهزة > Chrome > إمكانات الويب وانقر على الزر إضافة مصدر. في Origin / site pattern field، الصِق معرّف حزمة الويب الخاص بتطبيق الويب المعزول (سيتم تلقائيًا إضافة isolated-app:// كبروتوكول). يمكنك بعد ذلك ضبط مستويات الوصول إلى واجهات برمجة التطبيقات المختلفة (مسموح بها أو محظورة أو غير مضبوطة)، بما في ذلك إدارة النوافذ وإدارة الخطوط المحلية وواجهة برمجة التطبيقات لمراقبة الشاشة. بالنسبة إلى واجهات برمجة التطبيقات التي قد تتطلّب موافقة إضافية من المشرف لتفعيلها، مثل واجهة برمجة التطبيقات الإلزامية لمراقبة الشاشة، سيظهر مربّع حوار إضافي لتأكيد اختيارك. بعد الانتهاء، احفظ التغييرات وسيكون المستخدمون جاهزين
لبدء استخدام تطبيق IWA.
استخدام الإضافات
على الرغم من أنّ "تطبيقات الويب المعزولة" لا تتوافق مع الإضافات بشكلٍ تلقائي، يمكنك ربط الإضافات التي تملكها بها. لإجراء ذلك، عليك تعديل ملف بيان الإضافة. يحدّد القسم externally_connectable في ملف البيان صفحات الويب الخارجية أو إضافات Chrome الأخرى التي يمكن أن تتفاعل معها إضافتك. أضِف مصدر تطبيق الويب التثبيتي ضمن الحقل matches في externally_connectable (تأكَّد من تضمين المخطط isolated-app://):
{
"externally_connectable": {
"matches": ["isolated-app://79990854-bc9f-4319-a6f3-47686e54ed29/*"]
}
}
مع أنّ هذا الإجراء سيسمح بتشغيل الإضافة في تطبيق الويب المعزول، لن يسمح لها بإضافة محتوى إليه، بل سيقتصر الأمر على تبادل الرسائل بين الإضافة وتطبيق الويب المعزول.