Le app mobili utilizzano browser in-app per mantenere gli utenti agganciati all’ecosistema delle app e migliorare la loro esperienza. Questi browser consentono alle persone di vedere i contenuti internet senza lasciare l’app. Quando gli utenti vanno su browser esterni per guardare i contenuti Net, potrebbero essere distratti da altre cose. I browser in-app offrono agli utenti semplici funzionalità di navigazione senza tutte le campane e i fischi di un browser completo.
Cordova inappbrowser
Il plug -in InappBrowser per Cordova Crea una finestra del browser separata che funziona da sola a parte il Webview principale di Cordova. Questa finestra si comporta come un normale browser Net, ma con una differenza chiave: non può accedere alle API di Cordova. Questa separazione lo rende una buona scelta per il caricamento del contenuto di terze parti (non attendibili), in quanto aggiunge un ulteriore livello di protezione rispetto al caricamento di tali contenuti direttamente nel webview di Cordova principale.
Ecco le caratteristiche principali di InAppBrowser:
- Libertà dalla whitelist. L’inappbrowser non deve seguire la politica di sicurezza dei contenuti dell’app o la whitelist, a differenza del WebView principale.
- Navigazione autonoma. L’inappbrowser mantiene i collegamenti all’interno di se stesso invece di inviarli al browser predefinito del dispositivo.
- Gestione della sessione. L’inappbrowser cancella la sua sessione e la cache quando si chiude e riapri l’app. Ma se si mette l’app in background e la riporti, l’InappBrowser mantiene la sua sessione. Questo approccio trova un equilibrio tra mantenere i dati dell’utente durante il normale utilizzo dell’app e la protezione della privateness quando l’app si spegne.
Sfide con Cordova inappbrowser
Quando le app mobili utilizzano il plug-in InappBrowser di Cordova per avviare collegamenti Net, come quelli necessari per Single Signal-On (SSO), hanno colpito un blocco stradale. Quando abbiamo provato a integrarlo con l’IDP di Google, abbiamo riscontrato un problema. L’inappbrowser non sta aprendo l’URL di accesso di Google a causa dei difficili normal di sicurezza che Google segue Oauth 2.0.
Le regole di sicurezza di Google suggeriscono di utilizzare il browser di sistema, che è più sicuro. Altrimenti, possiamo usare altre soluzioni come AsweBauthenticationesssion su iOS, che sono specificamente realizzate per gli accessi OAuth 2.0.
Perché Cordova InappBrowser non funziona con Google IDP
Cordova InappBrowser utilizza WKWEBVIEW su iOS, un webview personalizzato. Questo WebView consente agli sviluppatori di tenere traccia delle modifiche agli URL, guardare le azioni dell’utente e aggiungere script, tra le altre cose. Queste caratteristiche preoccupano Google per la sicurezza, rendendo Cordova inappbrowser inadatto al login di Google.
Google Now vieta le richieste OAUTH nei browser incorporati (visualizzazioni Net) a causa di problemi di esperienza dell’utente e di sicurezza. Invece, Google suggerisce di utilizzare il browser di sistema o le schede browser in-app per OAuth. Su iOS, questo significa utilizzare SFSAFAriViewController, non WKWEBVIEW, per rendere l’accesso più sicuro e più facile per gli utenti.
Questo problema proviene dalle regole di sicurezza di Google, che richiedono determinate funzionalità e salvaguardie che l’InappBrowser potrebbe non offrire. Per risolvere questo problema, i produttori di app potrebbero dover considerare altri modi per accedere o utilizzare soluzioni realizzate per piattaforme specifiche come ASWAUTHENTINAZIONESSESSESSESSESSESSESSESSESSSIONE PER iOS, che sono costruite per gestire processi di accesso sicuri.
Condensatore inappbrowser
Apple continua advert aggiornare i suoi prodotti e la sua tecnologia. Questo aiuta, ma può creare problemi per gli sviluppatori.
Apple non supporta più UiWebView e presto rifiuterà gli invii dell’App Retailer che lo utilizzano. Gli sviluppatori dovrebbero utilizzare WKWEBVIEW per aggiungere contenuti Net alle loro app.
InappBrowser del condensatore utilizza WKWEBVIEW su iOS e WebView su Android. Su iOS, utilizza SFSAFAriViewController, che soddisfa le esigenze del servizio OAuth. Questa configurazione ha solo ascoltatori di eventi di base per le azioni del browser, il che lo rende più sicuro.
L’approccio del condensatore è più nuovo e offre più opzioni per mostrare e interagire con il contenuto. Funziona con iOS e Android e supporta anche app Net progressive (PWAS) ed elettroni.
Sfide del browser di condensatori
I collegamenti universali potrebbero non funzionare come ti aspetteresti da Android e alcune versioni iOS quando usi InappBrowser. Ciò accade perché InappBrowser funziona in un Webview Sandbox, tagliato dall’app principale per mantenere le cose sicure. Questa separazione impedisce a WebView di arrivare alle funzionalità dell’app native che richiedono funzionamento universali.
Invece di collegamenti universali per i flussi di accesso, le app ioniche possono impostare schemi URL personalizzati con PKCE (chiave di prova per lo scambio di codice). Questo metodo offre un modo sicuro per gestire gli accessi pur lavorando bene su piattaforme numerous.
Schemi URL personalizzati per OAuth 2.0 nelle app mobili
Molte piattaforme mobili e desktop supportano la comunicazione tra le app tramite URI consentendo alle app di registrare schemi URL personalizzati. Questi schemi, come “com.instance.app”, consentono alle app di gestire specifiche richieste URI.
Per implementare una richiesta di autorizzazione OAuth 2.0 con uno schema URL personalizzato. L’applicazione cellular apre un browser in-app con una richiesta di autorizzazione. L’URI di reindirizzamento nella richiesta di autorizzazione utilizza uno schema URL personalizzato registrato presso il sistema operativo.
Quando si seleziona uno schema URI, controllare se lo schema si basa su un nome di dominio sotto il controllo e utilizzato in ordine inverso. Un sito Net/app con myapp.customurl.com dovrebbe usare com.customurl.myapp come schema. Cerca di evitare di usare schemi generici come “MyApp” in quanto non soddisfano il requisito del nome di dominio. Più app gestite dallo stesso editore dovrebbero garantire che ogni schema sia unico all’interno di quel gruppo.
Esempio di URI di reindirizzamento che utilizza uno schema URL personalizzato: com.instance.app:/oauth2redirect/example-provider.
Ecco il flusso di autorizzazione per lo schema URL personalizzato:
- Il server di autorizzazione reindirizzerà all’URI di reindirizzamento del consumer dopo un’autenticazione riuscita.
- Il sistema operativo lancia l’app cellular L’URL verrà passato a un ascoltatore di app.
- L’app cellular elaborerà l’URI di reindirizzamento per estrarre il codice di autorizzazione e altri parametri.
Gli schemi URL personalizzati forniscono un modo senza soluzione di continuità per gestire i flussi OAuth 2.0 nelle app mobili, migliorando l’esperienza dell’utente consentendo la navigazione diretta all’interno dell’app
iOS
Se più app registrano lo stesso schema URL personalizzato, iOS non impedisce l’invocazione dello schema. Invece, viene indefinita quale app verrà lanciata quando viene chiamato lo schema.
Per ulteriori informazioni, vedere Documentazione di Apple.
Android
Quando più app si registrano per lo stesso schema URL personalizzato su Android, il sistema visualizza una finestra di dialogo SCELOSER all’utente, consentendo loro di selezionare quale app dovrebbe gestire l’URL. Questo comportamento fornisce un maggiore controllo all’utente ma può comunque comportare rischi per la sicurezza.
Per ulteriori informazioni, vedere Documentazione di Android.
PKCE (chiave di prova per lo scambio di codice)
Le applicazioni mobili dovrebbero implementare il Chiave di prova per lo scambio di codice L’estensione a OAuth e i fornitori di identità dovrebbero fornire supporto per PKCE.
PKCE è un protocollo utilizzato nell’autorizzazione OAuth 2.0 per assicurarsi che il cliente che ha avviato l’autorizzazione stia ricevendo il codice di autorizzazione. Funziona come segue:
- L’applicazione consumer genera una stringa crittograficamente casuale chiamata “Verificatore di codice”.
- Il consumer crea una “sfida del codice” trasformando il verificatore del codice, in genere utilizzando l’algoritmo di hashing SHA-256.
- Il consumer invia la sfida del codice insieme alla richiesta di autorizzazione al fornitore di identità.
- Il supplier di identità memorizza la sfida del codice e emette un codice di autorizzazione.
- Durante lo scambio del codice di autorizzazione per i token, il consumer invia il verificatore del codice originale.
- Il supplier di identità verifica che il verificatore del codice corrisponda alla sfida del codice originale.
Questo processo assicurerà che solo il consumer originale possa accedere al codice di autorizzazione, poiché una parte intercettante non possiederebbe il verificatore del codice. PKCE è ora raccomandato per tutti i consumer OAuth utilizzando il flusso del codice di autorizzazione.
Aswebauthentionesssion
ASWEBAUTHENTICATIONESSESSESSESSESSESSESSIONE Offre diversi vantaggi rispetto al browser dei condensatori per i flussi di autenticazione:
ASWAUTHENTICATIONESSESSESSESSESSESSESSESSA è progettato specificamente per l’autenticazione ed è conforme ai requisiti OAuth. Nel processo di revisione dell’app Apple, Apple preferisce implementare l’autenticazione utilizzando ASWAUTHENTISATIONSESSION.
ASWAUTHENTISESSESSESSESSESSESSESSIONE I dati del sito Net con browser Safari e app mobili. Ciò fornirà un’esperienza di accesso singolo senza soluzione di continuità tra le app mobili e il browser. Condivide i cookie e consente il completamento automatico della password, migliorando l’usabilità.
Mentre altri plug-in browser in-app offrono compatibilità multipiattaforma, ASWEBAUTHENTISESSESSESSESSESSESSESSESSAZIONE offre una soluzione più sicura e user-friendly per iOS.
Conclusione
L’implementazione di flussi di autorizzazione OAuth nelle applicazioni mobili richiede un’attenta considerazione delle migliori pratiche di sicurezza e specifiche della piattaforma. Mentre InappBrowser di Cordova non è più raccomandato a causa di problemi di sicurezza, gli sviluppatori hanno altre various affidabili.
Per iOS, ASWAUTHENTISESSESSESSESSESSESSEZIONE è preferita per i flussi OAuth, offrendo una maggiore sicurezza e un’integrazione senza soluzione di continuità con il sistema operativo. Per Android, il plug -in Capacità InappBrowser fornisce una soluzione praticabile per l’implementazione di processi di autenticazione sicuri.
Tuttavia, per la visualizzazione generale dei contenuti al di fuori dei flussi di autenticazione, il plug -in browser di condensatore si distingue come un’opzione più versatile e appropriata sia per iOS che per Android.