Berkomunikasi antara browser dan aplikasi asli dengan aman

12

Saya bekerja pada aplikasi web yang membutuhkan data yang hanya dapat diperoleh dari browser aplikasi asli yang diinstal secara lokal.

Bagaimana Anda bisa menyiasati kotak pasir peramban sehingga Anda dapat berkomunikasi (dengan aman, karena data berpotensi sensitif), dengan aplikasi asli.

Dalam satu-satunya contoh yang saya temukan, pengguna secara manual memindahkan beberapa token dan file di antara keduanya, yang merupakan pengalaman pengguna yang mengerikan yang ingin saya hindari.

Zak Kus
sumber
1
Anda mungkin bisa mendapatkan beberapa jenis solusi yang berfungsi di mana aplikasi asli berisi server web kecil yang berjalan di localhost.
amon
Saya juga memikirkan itu ... Saya memiliki keprihatinan yang tidak jelas yang tidak jelas bahwa itu tidak akan "dikhawatirkan". Apakah ada contoh aplikasi yang melakukan ini hari ini? (tulis ini dalam jawaban dan Anda mungkin akan mendapatkan poin)
Zak Kus
Browser yang disematkan akan menjadi yang terbaik. Sematkan browser di aplikasi dan programkan interaksi Anda sesuai kebutuhan.
GregJava

Jawaban:

7

Anda dapat menyematkan server web di aplikasi asli, lalu klien Anda dapat membuat panggilan ke sana melalui tautan yang dikodekan ke http: // localhost / xyz (Anda mungkin harus khawatir tentang peringatan skrip lintas situs di sini, dan / atau menjalankan server pada port non-http). Jika Anda menggunakan soket web, aplikasi asli Anda bahkan dapat mendorong data ke browser web begitu browser memulai komunikasi.

Saya melakukannya sendiri secara lokal, kontrol browser web tertanam meminta data visualisasi dari server web kustom dan ketika mengembangkan saya menjalankan keduanya pada PC yang sama.

Ada banyak server web tertanam kecil dan efisien untuk C / C ++ (Mongoose, NxWeb, civetweb dll), C # cenderung untuk server WCF full-on, python hadir dengan server web kecil di dalamnya IIRC.

gbjbaanb
sumber
Saya sedang mengerjakan solusi seperti ini, tetapi ada beberapa masalah ketika browser mencoba terhubung melalui websocket dari halaman web dari domain Internet (www.mydomain.com) dengan server websocket localhost, khususnya jika halaman web disajikan dengan HTTPS membutuhkan server websocket yang akan dikonfigurasi untuk menggunakan wss (WebSocket dengan SSL). Jika Anda menggunakan sertifikat yang ditandatangani sendiri untuk "mengamankan" server websocket maka browser tidak akan menyukai koneksi websocket Anda. Firefox akan memungkinkannya setelah Anda menerima sertifikat lokal tidak aman, tetapi browser lain tidak akan membiarkan Anda terhubung dengan mudah.
David
1
Untuk c # hari ini server web tertanam terbaik mungkin adalah host otomatis owin.
Esben Skov Pedersen
8

Ada beberapa cara untuk menggabungkan aplikasi asli dan aplikasi browser.

Anda dapat menyematkan browser di dalam aplikasi asli, seperti halnya aplikasi PhoneGap di ponsel. Itu akan memungkinkan Anda untuk memperpanjang mesin javascript browser, dan memungkinkan Anda melakukan panggilan di antara keduanya.

Atau, pikirkan kembali arsitektur Anda. Biarkan aplikasi asli dan aplikasi berbasis browser menggunakan server sebagai perantara. Jadi baik peramban dan aplikasi asli hanya berbicara ke server web, yang meneruskan informasi di antara keduanya sebagaimana diperlukan.

Atau jika Anda memerlukan fungsionalitas asli ... buat saja satu aplikasi asli.

Saya tidak merekomendasikan pendekatan 'server web lokal' untuk hal lain selain aplikasi yang berjalan di lingkungan yang terkendali. Jika perangkat lunak Anda dimaksudkan untuk menginstal dan dijalankan pada mesin pengguna akhir dengan persyaratan dukungan minimal, Anda akan berhadapan dengan sejumlah besar masalah terkait firewall dan perangkat lunak anti-virus.

GrandmasterB
sumber
Data yang saya butuhkan dari aplikasi asli ada pada apakah mesin itu (bukan pengguna) dapat diterima. Jika Anda menggunakan server web biasa sebagai perantara, dapatkah Anda memastikan mesin yang dihidupkan browsernya sama dengan yang dievaluasi oleh aplikasi asli. Juga, sepenuhnya setuju, ia tidak boleh memiliki dua tanpa alasan yang baik, tetapi kami memiliki alasan kami ^ _ ^
Zak Kus
Juga, tidak jelas bagi saya bagaimana menyematkan browser di aplikasi asli sebenarnya memungkinkan komunikasi antara browser dan aplikasi asli
Zak Kus
@ Zak seperti yang saya katakan, Anda dapat memperluas mesin javascript untuk memungkinkan mereka berbicara satu sama lain seperti yang dilakukan PhoneGap pada aplikasi seluler. Anda akan mendefinisikan metode yang bisa dipanggil oleh javascript pada halaman yang dijalankan oleh aplikasi asli, atau memanggil fungsi javascript dari aplikasi asli.
GrandmasterB
Menggunakan peramban tertanam seperti itu, saya pikir, akan menjadi cara terbaik untuk memastikan peramban berjalan pada mesin yang harus dijalankan.
GrandmasterB
Secara teknis saya setuju bahwa aplikasi asli dengan tampilan web adalah cara termudah. Namun menurut artikel bahasa Jerman ini dari heise online , web viewer android untuk android 4.3 dan di bawahnya memiliki masalah keamanan serius yang tidak dapat diperbaiki.
k3b