Sto lavorando a un gioco mobile sempre online (app nativa per Android / iOS con Unity) e vorrei poter autenticare il lettore senza bisogno di login / password all'inizio. Per coloro che sanno, cerco di ottenere uno schema di autenticazione simile ai famosi giochi Supercell (Clash of Clans, Boom Beach, ecc.) Cosa ho in mente:
-
La prima volta che l'utente avvia il gioco, viene eseguita una richiesta al server per un nuovo account, il server invia un UUID.
-
Questo UUID è memorizzato nel dispositivo (dovrei crittare o cancellarlo?).
-
Quando l'utente avvia il gioco, lo autenticano con un token (
UUID+timestamp+hmac(sha256, username+timestamp, K)
). È meglio generare un token di sessione temporaneo (memorizzato nel database) o potrei usare il token precedente per tutte le richieste dopo l'autenticazione? - Per ogni richiesta invio
token+params+timestamp+hmac(sha256, token+params+timestamp, K)
E ogni comunicazione sarà su SSL.
è totalmente insicuro?
NB: Nel gioco potrai fare acquisti in-app e in questo caso la prima volta che proverai a comprare qualcosa dovrai legare il tuo gioco con il tuo account GameCenter o Google Play o Facebook. Queste informazioni saranno archiviate nel database. Devo usare questi account per autenticare se è possibile?
Come puoi vedere, nulla è chiaro nella mia testa e io non sono sicuramente un esperto in sicurezza. Quindi ogni piccolo consiglio sarà apprezzato.