Italian Identificazioni varie

LucaMs

Expert
Licensed User
Longtime User
Stavolta voglio fare questa domanda prima nel forum italiano! Mi sento più patriota del solito :)

Come identificare app e dispositivo.

Ho trovato sia su Internet che qui sul sito, il suggerimento di creare un identificativo (UUID) univoco al primo avvio dell'app.

Prima obiezione che è stata sollevata era sul luogo in cui custodire questo codice; in un esempio di Erel, veniva salvato nella Internal ma, giustamente, gli hanno fatto notare che se l'utente reinstalla l'app, quel codice viene cancellato.

Io dovrei autorizzare l'utente di un'app a servirsi di un... server (il famigerato gioco multi..etc).

Vorrei ottenere che un utente sia autenticato e solo per quell'app e per quel dispositivo.


Forse spegnendo il pc per un po' mi verrà in mente la soluzione, ma tanti cervelli funzionano sicuramente meglio del mio :D


Grazie in anticipo
 
Last edited:

LucaMs

Expert
Licensed User
Longtime User
Ciao LucaMs...io uso GetDeviceId della libreria Phoneid associata ad un valore long della data di prima installazione e salvato il tutto nel db


Pare ci siano vari problemi, in questo metodo, soprattutto il fatto che sui Tablet senza "telefonia", non funziona!

[P.S. e anche su qualche smartphone potrebbe non funzionare... PARE!]
 

LucaMs

Expert
Licensed User
Longtime User
no non per autentificazione ma per aver un id unico per ogni installazione.
Unisco l'id ad una data long ed ha un id unico per dispositivo ..poi da quello se serve ci fai l' autentificazione ..io lo uso per altri motivi


A me piacere trovare un modo tramite il quale l'accesso al server avvenga automaticamente, se app e dispositivo sono riconosciuti.
Ma è anche difficile il primo accesso al server!
 

LucaMs

Expert
Licensed User
Longtime User
Visto che voi uomini fortunati starete tutti al mare o in piscina, in questo momento, mi metto qui a sproloquiare un po' su quest'argomento, sperando che mentre scrivo mi venga in mente la soluzione.

Cosa voglio ottenere?

1) Vorrei poter identificare la mia app ed il dispositivo sul quale è installata (ma non solo! Ci sono anche altri problemi)

Dopo alcune ricerche e domande, pare che il dispositivo non si possa in alcun modo identificare in modo univoco e certo.
Quindi, come codice identificativo, io potrei usare un UUID (ho trovato il codice per generarlo - notare che potrebbe capitare che due utenti generino casualmente lo stesso codice, anche se è altamente improbabile - ma se la iella ci mette lo zampino...!)

Potrei fare in modo che, all'avvio dell'app, questa cerchi questo codice nella DirInternal e, se non lo trovasse perché prima connessione in assoluto, lo generasse per poi inviarlo al Server. A questo punto io potrei controllare se nel db del server questo ID sia presente; nel caso in cui non lo fosse, il server dovrebbe accettare questo id (ed inserirlo nel db)? Si, potrebbe, ma se qualche rompiscatole scoprisse che per entrare nel gioco basta avere un UUID qualunque e ne inviasse uno?

Inoltre, se l'utente dovesse reinstallare l'app, l'ID nella DirInternal verrebbe cancellato (cercato in Internet e qui sul sito, domandato qui sul sito, non trovato il modo di rendere un file Read-Only da codice!).

Potrei pensare a come vengano autorizzati gli utenti sui Siti Web: di solito, email, nick e pw.

A parte il fatto che io vorrei che l'utente entrasse direttamente nel gioco, appena connesso, se non è la prima connessione, a me scoccia dare un'email quindi immagino anche a molti altri utenti. D'altra parte, l'email non risolverebbe il problema, perché se alla fine dovesse servire come codice identificativo, tanto vale usare un UUID.

Sembra sempre tutto semplice, all'apparenza; poi, invece...!

Bene, se avete letto tutto questo e non avete preso a martellate il PC, siete dei santi :).

Meglio che mi stacchi dal pc e provi a pensare senza scrivere tutta 'sta roba inutile.
 

picenainformatica

Active Member
Licensed User
Longtime User
La App manda lo UUID, il tuo server lo maschera con una bella crittografia e lo rimanda alla App, salvi il risultato nel DB, quando la App riparte decodifichi e confronti. Il buco rimane solo nel fatto che Java si può decompilare. Offusca, fai un bel casino nel software e fai girare la testa a chi cercherà di craccare. Se ci riesce è bravo. Tu però, ogni tanto o ad ogni aggiornamento, cambi lo schema e riscrivi nel DB (aggiorni il server, il software che poi aggiorna la chiave). Chi vuole installare usa l'ultima versione o ciccia. Quello bravo di prima ricomincia da capo e così vediamo chi è più Str...o.
 

LucaMs

Expert
Licensed User
Longtime User
E' una buona idea, grazie.

Rimangono però due problemi.

Quando il server riceve l'UUID non può sapere se gli arriva dalla mia app installata regolarmente e quindi gli invierebbe la chiave crittografata.

Il secondo è dove salvare, sul dispositivo, la chiave. Questo è davvero impossibile.

Avevo trovato sulla guida online di Google che c'è un modo di rendere Read-Only un file; benché io non sia un conoscitore di JavaObject o Relection, è stato facile creare una routine per questo. Al risultato negativo, Erel mi ha indicato una risposta sul Web (che io stesso avevo pubblicato su quel thread, ma si vede che non l'aveva notato) nella quale si dice che il file system non consente questa possibilità: ma come, il file system non lo consente e lo mettono tra i comandi disponibili? Questo mi suona davvero strano.

Questo è il link al thread.


Grazie ancora per l'ottimo consiglio e per aver seguito la faccenda, picena'
 

picenainformatica

Active Member
Licensed User
Longtime User
Secondo me devi prevedere una sorta di registrazione e farti pagare direttamente. Se vuoi fare tutto sul market devi fidarti e fare la registrazione per identificare la postazione. Dove scriverlo? Nel tuo server e nella dirinternal. Se reinstallano, lo UUID e' comunque unico.
 

LucaMs

Expert
Licensed User
Longtime User
Secondo me devi prevedere una sorta di registrazione e farti pagare direttamente. Se vuoi fare tutto sul market devi fidarti e fare la registrazione per identificare la postazione. Dove scriverlo? Nel tuo server e nella dirinternal. Se reinstallano, lo UUID e' comunque unico.

Eh quella di chiedere il pagamento e di conseguenza inviare il codice sarebbe la via giusta, ma temo che sarebbe sgradita agli utenti di Google Play (e forse anche a Google stessa).

La seconda frase non l'ho capita (l'età avanza :)).

La terza, invece... nemmeno; per come era "decisa" la cosa, l'UUID viene creato alla prima "connessione" ma se reinstallano e si collegano diventa come se fosse la prima.
 
Top