Lo que estás haciendo es una forma de DRM. Cuando la aplicación cliente tiene la capacidad de acceder a la API, y el atacante puede tener en sus manos la aplicación cliente, el atacante puede aprender lo que haga la aplicación cliente para acceder a la API. No hay forma posible de prevenirlo por completo. Pero hay formas de mitigar el problema.
Tener un secreto o certificado de cliente puede elevar un poco el listón, pero cualquier persona con su aplicación puede desmontarlo y extraer el secreto o certificado, en cuyo caso podrán simular la aplicación. También puede enviar actualizaciones que cambien el secreto y obliguen a sus usuarios a actualizar, lo que obliga a otras aplicaciones copycat a actualizar. Pero eso molestará a sus usuarios.
Probablemente el mejor enfoque es integrarse con la suscripción de Google / API IAP [1] si está cobrando por su aplicación. Si no está cobrando, puede usar la API de autenticación de Google para verificar que realmente exista un usuario en particular y solicitar un inicio de sesión en su aplicación. Si usa OAuth, al menos debería poder controlar la página de inicio de sesión, por lo que si alguien más intentara usar su API, la página mostraría el nombre de su aplicación en lugar del suyo.
- ¿Por qué alguien debería aprender el desarrollo de Android en lugar de aprender el desarrollo de back-end?
- ¿Cuál es la mejor aplicación de Android para filtros de fotos que no sea VSCO Cam?
- ¿Cuáles son las fuentes de ingresos para los desarrolladores de aplicaciones de Android?
- ¿Existe una aplicación de traducción del inglés al alemán fuera de línea para Android?
- ¿Cuáles son algunas aplicaciones de Android que le pagan dinero real?
Entonces necesitaría limitar a cada usuario a una cantidad razonable de uso para un solo usuario. De lo contrario, un actor malintencionado podría seguir el proceso de comprar una sola copia de su aplicación, iniciar sesión y luego extraer credenciales válidas que podrían usar con su API.
Puedes subir mucho el listón y puedes limitar el daño. Pero no es posible evitar por completo que alguien use su API.
Notas al pie
[1] API de desarrollador de Google Play