Accesso al servizio Web tramite rete privata virtuale

3

Sto sviluppando un'applicazione Android. La mia applicazione utilizza un servizio Web per recuperare informazioni in formato JSON che viene poi visualizzato nella visualizzazione dell'app.

Il requisito è che il mio cliente non voglia che nessuna delle sue informazioni sia trasferita su Internet. Sono quindi obbligato a personalizzare l'app per recuperare i miei dati attraverso una rete privata virtuale. L'idea è che le informazioni recuperate non possono essere accessibili da qualsiasi dispositivo che non è connesso alla VPN specifica.

Come posso portare a termine questo compito? Ogni punto sarà molto apprezzato.

    
posta Gordon Android Javalist 26.08.2016 - 09:36
fonte

2 risposte

1

Penso in questo modo:

  • Inserisci l'applicazione server sull'indirizzo IP locale nella rete dei clienti
  • Crea una rete dedicata come 10.1.2.0/24 in cui risiede solo questo servizio
  • Nel server VPN, ci dovrebbe essere una regola per gli utenti che possono accedere a questa rete, quindi alcuni possono accedere a tutta la rete, alcuni solo a questo servizio
  • Nell'app Android è possibile effettuare il rilevamento se 10 · 1.2.0 / 24 è raggiungibile, in particolare, controllerei il percorso verso di esso tramite /proc/net/route che è veloce, controllo non bloccante dell'applicazione. Puoi usare anche la libreria che può analizzare questo file.
  • È possibile che VPN configuri il gateway su tutte le sottoreti in 10.0.0.0/8, quindi potresti aver bisogno di eseguire un calcolo di analisi e sottorete in modo da poter gestire ulteriori modifiche VPN
  • Una volta che l'applicazione presume che ci sia una connessione VPN, puoi effettuare la chiamata all'API JSON ma poiché questa è la VPN potrebbe essere necessario aumentare il timeout e, a causa di ciò, potrebbe essere necessario non bloccare
  • Dato che stabilire connessioni via VPN è più lento specialmente sulle reti 3G / LTE, potresti voler mantenere una connessione persistente, quindi questo deve essere configurato sul client HTTP che usi e sul server (come timeout keep-alive di tomcat / httpd ). È possibile testare anche le connessioni persistenti non persistenti per vedere quali sono le prestazioni migliori. Keep-alive a volte è "connessione persistente", a volte è "TCP keep alive", quindi cerca nei documenti cosa è cosa, entrambi possono essere utilizzati.
  • È possibile monitorare la disconnessione VPN allo stesso modo in cui si cerca la connessione, quindi in caso di disconnessione è possibile apportare modifiche di stato non intrusivo alla GUI APP
  • L'APP del server potrebbe dover consentire solo determinate sottoreti, quindi potrebbe essere necessario firewallarlo in modo che non tutti possano usarlo

Questo è un problema abbastanza difficile se devi gestire sia la connessione VPN che i socket HTTP. Farei attenzione con i tentativi e mantenere il monitoraggio del percorso ogni 1 s.

    
risposta data 26.08.2016 - 17:14
fonte
0

Un approccio leggermente più immediato è quello di guardare per-app-VPN attraverso l'uso di strumenti come un server MDM (mi viene in mente MobileIron). Se il cliente ha già un server MDM che gestisce i propri dispositivi Android, sarà in grado di applicare la configurazione VPN al dispositivo insieme alla distribuzione dell'app. Ciò consentirebbe al sistema operativo di forzare una VPN ogni volta che l'applicazione effettua QUALSIASI connessione di rete. Non credo che sia necessario alcun cambiamento di codice da parte tua dal momento che il sistema operativo gestirà le connessioni dell'app per garantire che utilizzi sempre la VPN.

    
risposta data 25.03.2017 - 06:30
fonte

Leggi altre domande sui tag