Estoy trabajando en un juego móvil en Unity y quiero poder identificar a mi usuario sin que inicie sesión (para que cuando envíen datos al servidor sepa que son ellos).
En este caso específico, la solución no tiene que ser a prueba de pérdida de datos (lo que significa que no es el fin del mundo si el usuario pierde el acceso a sus datos en el servidor), pero realmente quiero evitar situaciones en las que los usuarios puedan acceder datos de otros usuarios.
Esto es lo que pensé hasta ahora: cuando el usuario inicia el juego, se crea una identificación aleatoria y se guarda en PlayerPrefs. A partir de ahí, el juego toma esa identificación, le agrega la dirección IP del usuario y la procesa.
Luego, este hash se envía al servidor, y el servidor conserva en sus datos el hash y la dirección IP desde la que se envió la solicitud.
De ahora en adelante, cada solicitud enviada por el usuario al servidor debe estar firmada por el hash y provenir de esta dirección IP específica. Esto significa que si el usuario borra PlayerPrefs, desinstala el juego o cambia de dispositivo, perderá el acceso a sus datos en el servidor.
¿Crees que esto funcionará, o es poco práctico/inseguro/ineficiente?
¡Gracias por adelantado!
No puede tomar la IP porque cambia mucho en un teléfono móvil, debe apegarse a un UUID aleatorio generado cuando se instala la aplicación, tal vez pueda agregar algo como la dirección MAC del adaptador Wifi porque eso no cambiará... pero si el usuario está en roaming o usando la red celular es una suposición...
Recuerde que obtener identificadores de hardware va en contra de los procedimientos de privacidad de muchos países y empresas, me limitaré a generar un UUID aleatorio para cada instalación de la aplicación.
https://developer.android.com/training/articles/user-data-ids
Puede identificar el dispositivo por su ID único. Funciona para Android e iOS. ( Documentación )
string deviceID = SystemInfo.deviceUniqueIdentifier;