Aggiornamento
Mentre il presupposto implicito nella domanda sembra ragionevole, non è effettivamente vero. Ulteriori letture delle fonti di Google rivelano che lo scopo di Auth Util (e successivo Firebase) è di autenticare l'utente e proteggere il server. Dato che il server vede solo il traffico di rete, è possibile replicare il traffico da un altro client.
Inoltre, la definizione di Android è piuttosto sfocata, in quanto OEM modifica il SO di base in base alle proprie esigenze.
questo è probabile sbagliato
Una possibilità è quella di utilizzare il
Apple Push Notification. È possibile registrare un dispositivo e
push notifications specifically to it. Quando l'app viene caricata, invia una richiesta al server con il suo
device token e riceve essenzialmente un cookie di sessione tramite l'APN.
Un'avvertenza è quella it is not encrypted. Puoi facilmente risolvere questo problema inviando una chiave simmetrica generata a caso nella richiesta. Il cookie che ricevi verrebbe crittografato sul server e decifrato utilizzando la stessa chiave nel dispositivo iOS.
Questo risolve il problema di memorizzare chiavi nell'origine e dimostra che le richieste provenivano da un dispositivo iOS.
Naturalmente, questo può essere semplificato generando un certificato, memorizzandolo nella catena di chiavi e inviando la chiave privata al server per l'archiviazione durante la registrazione. Dopo la registrazione iniziale e la convalida tramite APN, i messaggi successivi possono essere firmati utilizzando l'id del dispositivo + la chiave pubblica del certificato.
Un ultimo problema è che APN può essere utilizzato anche per registrare dispositivi OSX. Non sono stato in grado di capire come escludere quelli (ancora).
Disclaimer: è stata una lunga giornata di scrittura delle specifiche. Sono ragionevolmente a mio agio con il meccanismo di registrazione iniziale del dispositivo iOS usando APN. Potrei aver sbagliato le parti di crittografia. Se è così, commenta gentilmente, per favore.
fonte
2016-03-02 17:51:38