Aplikasi Web Terisolasi (IWA)

Web adalah platform aplikasi yang benar-benar unik. Aplikasi yang dibangun di atasnya dapat langsung diakses di sistem operasi mana pun tanpa perlu perubahan kode atau kompilasi. Setiap kali pengguna membuka aplikasi Anda, mereka akan selalu memiliki versi terbaru. Aplikasi ini dapat diinstal dan dapat berfungsi secara offline, sangat mumpuni, dan sangat mudah dibagikan hanya dengan link. Buat aplikasi web, dan aplikasi tersebut akan berfungsi di mana saja.

Karena web bertujuan untuk aman secara default, model keamanannya harus sangat konservatif. Setiap kemampuan baru yang ditambahkan harus aman bagi pengguna biasa yang secara tidak sengaja menemukannya melalui URL. Kami menyebut model keamanan ini sebagai drive by web. Meskipun bagus untuk banyak aplikasi, dan dapat dibuat lebih aman menggunakan Kebijakan Keamanan Konten dan isolasi lintas origin, metode ini tidak berfungsi untuk setiap kasus penggunaan. Sejumlah API yang sangat penting dan sangat canggih, seperti Direct Sockets dan Controlled Frame, yang dibutuhkan developer tidak dapat dibuat cukup aman untuk digunakan oleh web.

Untuk aplikasi ini, saat ini tidak ada opsi untuk membangun di web. Bagi yang lain, model keamanan web mungkin tidak cukup konservatif; mereka mungkin tidak memiliki asumsi bahwa server dapat dipercaya, dan lebih memilih aplikasi mandiri yang ditandatangani dan diberi versi secara terpisah. Model keamanan baru yang sangat tepercaya diperlukan. Aplikasi Web Terisolasi (IWA) menyediakan model aplikasi terisolasi, yang di-bundle, diberi versi, ditandatangani, dan tepercaya yang dibangun di atas platform web yang ada untuk memungkinkan developer ini.

Spektrum kepercayaan di web

Anda dapat menganggap keamanan dan kemampuan di web sebagai spektrum.

Ilustrasi yang menunjukkan spektrum kepercayaan di web. Di sebelah kiri, ada globe yang merepresentasikan web yang dapat diakses dengan berkendara. Di bagian tengah, Progressive Web App. Di sebelah kanan, ada akuarium dengan ikan mas di dalamnya, yang merepresentasikan Aplikasi Web Terisolasi. Garis hitam solid menghubungkan ketiga ikon secara horizontal, dan garis merah putus-putus memisahkan Progressive Web App dari Aplikasi Web Terisolasi

Web drive-by di sebelah kiri memiliki model keamanan kepercayaan terendah karena harus paling mudah diakses, dan oleh karena itu memiliki akses paling sedikit ke sistem pengguna. Aplikasi web yang diinstal browser, di tengah mendapatkan sedikit lebih banyak kepercayaan, dan dapat berintegrasi sedikit lebih dalam ke dalam sistem pengguna. Pengguna umumnya dapat beralih antara aplikasi versi web yang diakses tanpa penginstalan dan aplikasi versi yang diinstal di browser tanpa masalah.

Kemudian, ada Aplikasi Web Terisolasi dengan kepercayaan tinggi.

Aplikasi ini berfungsi dan terasa lebih seperti aplikasi native serta dapat mengakses integrasi sistem yang mendalam dan kemampuan yang canggih. Pengguna tidak dapat beralih di antara keduanya dan drive-by-web. Jika Anda memerlukan tingkat keamanan ini, atau kemampuan ini, tidak ada cara untuk kembali.

Saat mencoba memutuskan di mana Anda harus menempatkan diri dalam spektrum ini, pilih model keamanan dengan tingkat kepercayaan terendah yang dapat Anda gunakan, seperti Progressive Web App. Hal ini akan memberi Anda jangkauan terbesar, mengharuskan Anda mengelola sendiri masalah keamanan paling sedikit, dan akan menjadi yang paling fleksibel bagi developer dan pengguna Anda.

Didesain agar aman

Aplikasi Web Terisolasi menyediakan model keamanan yang sangat tepercaya untuk aplikasi web. Namun, untuk mengaktifkannya, beberapa asumsi yang dibuat oleh drive-by web tentang kepercayaan perlu dipikirkan ulang. Elemen penyusun web inti, seperti server dan DNS, tidak dapat lagi dipercaya secara eksplisit. Vektor serangan yang mungkin tampak lebih relevan untuk aplikasi native tiba-tiba menjadi penting. Jadi, untuk mendapatkan akses ke model keamanan baru dengan tingkat kepercayaan tinggi yang disediakan oleh IWA, aplikasi web harus dikemas, diisolasi, dan diamankan.

Dikemas

Halaman dan aset untuk Aplikasi Web Terisolasi tidak dapat ditayangkan dari server aktif atau diambil melalui jaringan seperti aplikasi web normal. Sebagai gantinya, untuk mendapatkan akses ke model keamanan baru dengan tingkat kepercayaan tinggi, aplikasi web harus mengemas semua resource yang diperlukan untuk dijalankan ke dalam WebBundle Bertanda Tangan. Paket web bertanda tangan mengambil semua resource yang diperlukan untuk menjalankan situs dan memaketkannya bersama ke dalam file .swbn, lalu menggabungkannya dengan blok integritas. Hal ini memungkinkan aplikasi web didownload secara aman secara keseluruhan, dan bahkan dibagikan atau diinstal saat offline.

Namun, hal ini menimbulkan masalah untuk memverifikasi keaslian kode situs: Kunci TLS memerlukan koneksi internet agar dapat berfungsi. Alih-alih kunci TLS, IWA ditandatangani dengan kunci yang dapat disimpan secara offline dengan aman. Kabar baiknya adalah, jika Anda dapat mengumpulkan semua file produksi ke dalam folder, Anda dapat mengubahnya menjadi IWA tanpa banyak modifikasi.

Membuat kunci penandatanganan

Kunci penandatanganan adalah pasangan kunci Ed25519 atau ECDSA P-256, dengan kunci pribadi yang digunakan untuk menandatangani paket dan kunci publik yang digunakan untuk memverifikasi paket. Anda dapat menggunakan OpenSSL untuk membuat dan mengenkripsi kunci Ed25519 atau 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

Kunci penandatanganan juga memiliki tujuan sekunder. Karena domain mungkin rentan terhadap hilangnya kontrol seperti server, domain tidak dapat digunakan untuk mengidentifikasi IWA yang diinstal. Sebagai gantinya, IWA diidentifikasi oleh kunci publik paket, yang merupakan bagian dari tanda tangannya dan terikat ke kunci pribadi. Ini adalah perubahan signifikan pada cara kerja web drive-by, jadi alih-alih menggunakan HTTPS, IWA juga menggunakan skema baru: isolated-app://.

Membuat paket aplikasi

Setelah kunci penandatanganan tersedia, saatnya membuat bundle aplikasi web. Untuk melakukannya, Anda dapat menggunakan paket NodeJS resmi untuk membuat bundle, lalu menandatangani IWA (alat command line Go juga tersedia). Pertama, gunakan paket wbn, yang mengarah ke folder yang berisi semua file produksi IWA Anda (di sini dist) untuk menggabungkannya menjadi bundle yang tidak bertanda tangan:

npx wbn --dir dist

Tindakan ini akan menghasilkan paket web yang tidak bertanda tangan dari direktori tersebut ke out.wbn. Setelah dibuat, gunakan kunci Ed25519 atau ECDSA P-256 terenkripsi yang Anda buat sebelumnya untuk menandatanganinya menggunakan wbn-sign:

npx wbn-sign -i out.wbn -k encrypted_key.pem -o signed.swbn

Tindakan ini akan menghasilkan paket web bertanda tangan dari paket web yang tidak bertanda tangan yang disebut signed.swbn. Setelah ditandatangani, alat ini juga akan menampilkan ID Paket Web dan asal Aplikasi Web Terisolasi. Asal Aplikasi Web Terisolasi adalah cara IWA Anda diidentifikasi di browser.

Web Bundle ID: ggx2sheak3vpmm7vmjqnjwuzx3xwot3vdayrlgnvbkq2mp5lg4daaaic
Isolated Web App Origin: isolated-app://ggx2sheak3vpmm7vmjqnjwuzx3xwot3vdayrlgnvbkq2mp5lg4daaaic/

Jika Anda menggunakan Webpack, Rollup, atau alat yang mendukung pluginnya (seperti Vite), Anda dapat menggunakan salah satu plugin bundler (Webpack, Rollup) yang membungkus paket ini, bukan memanggilnya secara langsung. Tindakan ini akan menghasilkan paket yang ditandatangani sebagai output build Anda.

Menguji aplikasi

Anda dapat menguji IWA dengan dua cara: dengan menjalankan server pengembangan melalui proxy developer IWA bawaan Chrome, atau dengan menginstal IWA yang di-bundle. Untuk melakukannya, Anda harus menggunakan Chrome atau ChromeOS 120 atau yang lebih baru, mengaktifkan flag IWA, dan menginstal aplikasi melalui Web App Internals Chrome:

  1. Aktifkan tanda chrome://flags/#enable-isolated-web-app-dev-mode
  2. Uji IWA Anda dengan membuka halaman Web App Internals Chrome di chrome://web-app-internals

Setelah berada di halaman Web App Internals, Anda memiliki dua pilihan: Install IWA with Dev Mode Proxy atau Install IWA from Signed Web Bundle.

Jika menginstal melalui Proxy Mode Dev, Anda dapat menginstal URL apa pun, termasuk situs yang berjalan dari server pengembangan lokal, sebagai IWA, tanpa memaketkannya, dengan asumsi situs tersebut memenuhi persyaratan penginstalan IWA lainnya. Setelah diinstal, IWA untuk URL tersebut akan ditambahkan ke sistem Anda dengan kebijakan keamanan dan batasan yang tepat, serta akses ke API khusus IWA. ID acak akan ditetapkan untuknya. Chrome Dev Tools juga tersedia dalam mode ini untuk membantu Anda men-debug aplikasi. Jika menginstal dari Paket Web Bertanda Tangan, Anda akan mengupload IWA paket bertanda tangan dan IWA tersebut akan diinstal seolah-olah telah didownload oleh pengguna akhir.

Di halaman Web App Internals, Anda juga dapat memaksa pemeriksaan update untuk aplikasi apa pun yang diinstal melalui Dev Mode Proxy atau dari Paket Web Bertanda Tangan untuk menguji proses update juga.

Diisolasi

Kepercayaan adalah kunci untuk Aplikasi Web Terisolasi (IWA). Hal ini dimulai dengan cara mereka berjalan. Pengguna memiliki model mental yang berbeda tentang apa yang dapat dan harus dilakukan aplikasi, bergantung pada apakah aplikasi berjalan di browser atau di jendela mandiri, umumnya percaya bahwa aplikasi mandiri memiliki lebih banyak akses dan lebih canggih. Karena IWA dapat memperoleh akses ke API dengan tingkat kepercayaan tinggi, IWA harus berjalan di jendela mandiri agar sesuai dengan model mental ini. Hal ini memisahkan mereka secara visual dari browser. Namun, ini lebih dari sekadar pemisahan visual.

Aplikasi Web Terisolasi berjalan di protokol yang berbeda dengan situs dalam browser (isolated-app versus http atau https). Artinya, setiap IWA sepenuhnya terpisah dari situs yang berjalan dalam browser, meskipun dibangun oleh perusahaan yang sama, berkat kebijakan origin yang sama. Penyimpanan IWA juga dipisahkan satu sama lain. Bersama-sama, hal ini memastikan bahwa konten lintas origin tidak dapat bocor di antara IWA yang berbeda atau di antara IWA dan konteks penjelajahan normal pengguna.

Namun, pengisolasian maupun penggabungan dan penandatanganan kode situs tidak berguna untuk membangun kepercayaan jika IWA dapat mendownload dan menjalankan kode arbitrer setelah penginstalan. Untuk memastikan hal ini sekaligus mengizinkan IWA terhubung ke situs lain untuk mendapatkan konten, IWA menerapkan serangkaian Kebijakan Keamanan Konten yang ketat:

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';

CSP ini tidak cukup untuk sepenuhnya melindungi dari kode pihak ketiga yang berpotensi berbahaya. IWA juga terisolasi lintas asal, menetapkan header untuk mengurangi kemampuan resource pihak ketiga untuk memengaruhinya:

  • Hanya izinkan resource dari paket atau resource lintas asal yang ditandai secara eksplisit sebagai mendukung CORS dengan header kebijakan resource lintas asal (CORP) yang ditetapkan atau atribut crossorigin. (Cross-Origin-Embedder-Policy)
  • Melarang permintaan lintas origin tanpa CORS (Cross-Origin-Resource-Policy)
  • Mengisolasi proses konteks penjelajahan dari dokumen lintas origin, mencegah referensi window.opener dan akses objek global (Cross-Origin-Opener-Policy)
  • Mencegah situs disematkan dalam frame atau 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'

Meskipun pembatasan ini diterapkan, ada satu lagi potensi serangan yang dilawan oleh IWA: serangan pemecah urutan. Serangan pemecah urutan terjadi saat konten pihak ketiga yang berbahaya mencoba menciptakan pengalaman pengguna yang membingungkan dan berpotensi dapat dieksploitasi dengan membuka halaman secara tidak terduga, seperti membuka langsung halaman setelan internal. IWA mencegah hal ini dengan melarang deep linking arbitrer dari situs eksternal, hanya mengizinkan aplikasi dibuka dengan membuka titik entri yang ditentukan dengan baik, seperti start_url, protocol handler, share target, atau melalui launch handler.

Dikunci

Pengemasan dan isolasi memberikan serangkaian jaminan terkait apa yang diizinkan untuk dijalankan dan dari mana asalnya, tetapi sifat dinamis izin di web berarti izin saja tidak dapat memastikan bahwa aplikasi web hanya menggunakan kemampuan yang dibutuhkannya. Karena kemampuan yang berbeda memiliki pertimbangan keamanan yang berbeda, pengguna atau administrator akan ingin mengaudit izin yang dapat digunakan oleh IWA, seperti yang dapat mereka lakukan dengan aplikasi native lainnya seperti Android dan iOS sebelum mereka menginstal atau mengupdate aplikasi.

Untuk memfasilitasi hal ini, Aplikasi Web Terisolasi memblokir semua permintaan izin secara default. Kemudian, developer dapat memilih untuk menggunakan izin yang mereka butuhkan dengan menambahkan kolom permissions_policy ke Manifes Aplikasi Web mereka. Kolom ini berisi pasangan nilai/kunci arahan kebijakan izin dan daftar yang diizinkan kebijakan izin untuk setiap izin yang mungkin diminta oleh IWA, atau frame turunan mana pun seperti Frame yang Dikontrol atau iframe. Menambahkan izin di sini tidak otomatis memberikannya; melainkan membuatnya tersedia untuk diminta saat permintaan untuk kemampuan tersebut dibuat.

Misalnya, Anda sedang membuat IWA pelacakan armada. Anda mungkin memerlukan IWA agar dapat meminta lokasi pengguna, dan agar peta sematan juga dapat meminta lokasi. Anda juga dapat mengizinkan situs yang disematkan untuk ditampilkan dalam layar penuh guna memberikan tampilan imersif bagi pengguna. Untuk melakukannya, Anda harus menyiapkan kebijakan izin berikut di Manifes Aplikasi Web Anda:

"permissions_policy": {
   "geolocation": [ "self", "https://map.example.com" ],
   "fullscreen": [ "*" ]
}

Karena header Permissions-Policy juga dapat ditentukan oleh WebBundle, hanya izin yang dideklarasikan di keduanya yang akan diizinkan, dan kemudian hanya origin dalam daftar yang diizinkan yang ada di keduanya yang akan diizinkan.

Diberi nama dan diberi versi

Aplikasi web normal mengandalkan nama domain untuk mengidentifikasi diri mereka kepada pengguna dan dapat diperbarui dengan mengubah kode yang ditayangkan di domain tersebut. Namun, karena batasan keamanan seputar Aplikasi Web Terisolasi, identitas dan update harus ditangani secara berbeda. Seperti Progressive Web App, Aplikasi Web Terisolasi memerlukan file Manifes Aplikasi Web untuk mengidentifikasinya kepada pengguna Anda.

Manifes aplikasi web

Aplikasi Web Terisolasi (IWA) memiliki properti manifes utama yang sama untuk Manifes Aplikasi Web seperti PWA, dengan beberapa variasi kecil. Misalnya, display berfungsi sedikit berbeda; browser dan minimal-ui dipaksa ke tampilan minimal-ui, dan fullscreen serta standalone dipaksa ke tampilan standalone (opsi display_override tambahan berfungsi seperti yang diharapkan). Selain itu, ada dua kolom lagi yang harus disertakan, version dan update_manifest_url:

  • version: Wajib untuk Aplikasi Web Terisolasi (IWA). String yang terdiri dari satu atau beberapa bilangan bulat yang dipisahkan dengan titik (.). Versi Anda bisa berupa yang sederhana seperti 1, 2, 3, dll…, atau yang kompleks seperti SemVer (1.2.3). Nomor versi harus cocok dengan ekspresi reguler ^(\d+.?)*\d$.
  • update_manifest_url: Opsional, tetapi direkomendasikan untuk diisi dengan URL HTTPS (atau localhost untuk pengujian) tempat Manifes Update Aplikasi Web dapat diambil.

Manifes Aplikasi Web minimal untuk Aplikasi Web Terisolasi mungkin terlihat seperti ini:

{
  "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"
    }
  ]
}

Manifes update aplikasi web

Manifes Update Aplikasi Web adalah file JSON yang menjelaskan setiap versi aplikasi web tertentu. Objek JSON berisi satu kolom wajib diisi, version, yang merupakan daftar objek yang berisi version, src, dan channels:

  • version - Nomor versi aplikasi, sama dengan kolom version Web App Manifest
  • src - URL HTTPS (atau localhost untuk pengujian) yang mengarah ke paket yang dihosting untuk versi tersebut (file .swbn). URL relatif bersifat relatif terhadap file Manifes Update Aplikasi Web.
  • channels - Daftar string untuk mengidentifikasi saluran update yang menjadi bagian dari versi ini. Channel default khusus digunakan untuk mendeskripsikan channel utama yang akan digunakan jika tidak ada channel lain yang dipilih.

Anda juga dapat menyertakan kolom channels, objek ID channel Anda dengan properti name opsional untuk setiap ID guna memberikan nama yang mudah dibaca (termasuk untuk channel default. Channel yang tidak menyertakan properti name, atau tidak disertakan dalam objek channels, menggunakan ID-nya sebagai namanya.

Manifes update minimal mungkin terlihat seperti ini:

{
  "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"
    }
  }
}

Dalam contoh ini, ada tiga saluran: default yang akan diberi label Stable, 5-lts yang akan diberi label 5.x Long-term Stable, dan next yang akan diberi label next. Jika pengguna berada di saluran 5-lts, mereka akan mendapatkan versi 5.2.17. Jika berada di saluran default, mereka akan mendapatkan versi 5.3.0, dan jika berada di saluran next, mereka akan mendapatkan versi 5.3.1.

Manifes Update Aplikasi Web dapat dihosting di server mana pun. Update diperiksa setiap 4-6 jam.

Dikelola admin

Untuk peluncuran awalnya, Aplikasi Web Terisolasi hanya dapat diinstal di Chromebook yang dikelola Chrome Enterprise oleh administrator melalui panel Admin.

Untuk memulai, dari panel Admin, buka Perangkat > Chrome > Aplikasi & ekstensi > Pengguna & browser. Tab ini memungkinkan Anda menambahkan aplikasi dan ekstensi dari Chrome Web Store, Google Play, dan web untuk pengguna di seluruh organisasi Anda. Penambahan item dilakukan dengan membuka tombol tambah mengambang berwarna kuning (+) di sudut kanan bawah layar dan memilih jenis item yang akan ditambahkan.

Saat dibuka, akan ada ikon persegi di dalam persegi, berlabel Tambahkan Aplikasi Web Terisolasi. Mengkliknya akan membuka modal untuk menambahkan IWA ke OU Anda. Untuk melakukannya, Anda memerlukan dua informasi: ID Paket Web IWA (dibuat dari kunci publik aplikasi Anda dan ditampilkan setelah aplikasi di-bundle dan ditandatangani) dan URL ke Manifes Update Aplikasi Web untuk IWA. Setelah diinstal, Anda akan memiliki serangkaian opsi standar panel Admin untuk mengelolanya:

  • Kebijakan penginstalan: Cara Anda ingin IWA diinstal, baik diinstal otomatis, diinstal otomatis dan disematkan ke panel aplikasi ChromeOS, atau mencegah penginstalan.
  • Luncurkan saat login: Cara Anda ingin IWA diluncurkan, baik mengizinkan pengguna untuk meluncurkan secara manual, memaksa IWA diluncurkan saat pengguna login, tetapi mengizinkannya menutupnya, atau memaksa peluncuran saat pengguna login dan mencegahnya ditutup.

Setelah disimpan, aplikasi akan diinstal saat update kebijakan berikutnya diterapkan ke Chromebook di OU tersebut. Setelah diinstal, perangkat pengguna akan memeriksa update dari Manifes Update Aplikasi Web setiap 4-6 jam.

Selain menginstal IWA secara paksa, Anda juga dapat memberikan beberapa izin secara otomatis untuk IWA dengan cara yang sama seperti yang dapat Anda lakukan untuk aplikasi web lainnya. Untuk melakukannya, buka Perangkat > Chrome > Kemampuan web, lalu klik tombol Tambahkan origin. Di Origin / site pattern field, tempelkan ID Paket Web IWA (isolated-app:// akan otomatis ditambahkan sebagai protokolnya). Dari sana, Anda dapat menetapkan tingkat akses ke berbagai API (diizinkan/diblokir/tidak ditetapkan), termasuk pengelolaan jendela, pengelolaan font lokal, dan API pemantauan layar. Untuk API yang mungkin memerlukan keikutsertaan tambahan dari administrator agar dapat diaktifkan, seperti API pemantauan layar wajib, dialog tambahan akan muncul untuk mengonfirmasi pilihan Anda. Setelah selesai, simpan perubahan dan pengguna Anda akan siap untuk mulai menggunakan IWA Anda.

Menggunakan ekstensi

Meskipun Aplikasi Web Terisolasi tidak berfungsi dengan ekstensi secara langsung, Anda dapat menghubungkan ekstensi yang Anda miliki ke aplikasi tersebut. Untuk melakukannya, Anda perlu mengedit file manifes ekstensi. Bagian externally_connectable dari manifes menentukan halaman web eksternal atau Ekstensi Chrome lain yang dapat berinteraksi dengan ekstensi Anda. Tambahkan asal IWA Anda di kolom matches dalam externally_connectable (pastikan untuk menyertakan skema isolated-app://):

{
  "externally_connectable": {
    "matches": ["isolated-app://79990854-bc9f-4319-a6f3-47686e54ed29/*"]
  }
}

Meskipun hal ini akan memungkinkan ekstensi Anda berjalan di Aplikasi Web Terisolasi, ekstensi tidak akan dapat menyuntikkan konten ke dalamnya; Anda hanya dapat meneruskan pesan antara ekstensi dan IWA Anda.