La mejor práctica al permitir que sólo la aplicación de Android acceda a Rails API

No encontré ninguna respuesta concreta y la mayoría de las soluciones son más antiguas así que me gustaría pedirle a la comunidad las mejores prácticas para proteger la API de Rails de otras solicitudes y permitir que sólo la aplicación de Android acceda a ella. No hay registro de usuario ni inicio de sesión. La aplicación de Android sólo necesita acceso a los datos.

Estaba pensando en insertar una clave secreta dentro de mi aplicación de Android y pasar esa clave en cada solicitud, pero esto no parece demasiado seguro para mí.

¿Qué práctica recomendada se recomienda para proteger Rails API de otras solicitudes y permitir que solo la aplicación de Android acceda a ella? Gracias.

No tengo mucha experiencia con API, pero sí sé que si quieres asegurarlos correctamente, puedes usar algunas claves secretas API para manejar el trabajo

Claves del API

Si desea proporcionar funcionalidad sólo a un grupo particular de usuarios, será mejor incrustar las claves API en sus aplicaciones.

No sé cómo lograría esto específicamente (IE sólo para sus sistemas Android), pero lo que deseará en un mundo ideal, solo permitirá que determinadas cuentas habilitadas por la clave de API accedan a los datos de la aplicación Rails.

Su trabajo entonces será proporcionar las llaves a los dispositivos androide-accionados solamente (la pieza que no estoy seguro sobre todavía).

Rails es realmente muy versátil cuando se trata de asegurar una API :

Introduzca aquí la descripción de la imagen

ID de Android

No sé específicamente, si está instalando aplicaciones en dispositivos Android, seguramente tendrá acceso a una ID de Android o algo así?

Al leer esta documentación , parece que obtiene acceso a una colección de ID de dispositivo dentro de Android (tanto para su dispositivo como para la instalación de Android). Me gustaría ver cómo utilizar estos como una forma de identificar las solicitudes de API

¿Existe un ID exclusivo de dispositivo Android?

Tal vez su flujo podría ser algo así como – la primera ejecución de la aplicación verificará que el dispositivo es Android, y si es así, agrega el ID de dispositivo a sus raíles "API Keys" db. Esto le permitirá permitir el acceso al dispositivo en el futuro

No creo que pueda obtener el 100% de seguridad. Pero si almacena la clave secreta en el área de datos de la aplicación (es decir, escribe un archivo en el almacén interno), en el peor de los casos será muy difícil llegar. Dudo en decir imposible. El chink es alguien con un dispositivo con raíces que puede abrir el archivo con bastante facilidad. Puedes sacar un truco como cifrar la clave usando otra clave que está en tu código fuente, luego ocultar tu fuente usando ProGuard o algo así. Esto no será perfecto tampoco, pero hará que sea un dolor grave en la parte trasera para obtener la clave, incluso si el usuario tiene root. Probablemente lo mejor que puedas hacer.

  • Dispositivo de Android de acceso de host local en la computadora portátil
  • Sincronizar cliente Android y servidor REST
  • Configurar la autenticación de http
  • Convierta la aplicación Ruby on Rails en la aplicación Android PhoneGap nativa
  • Solución de empuje de servidor en Rails
  • Tipo de entrada = número no es posible insertar números negativos en el teléfono móvil
  • Solicitud POST con Retrofit dando 500
  • ¿Qué puedo usar para permitir que una aplicación de Android se comunique con una aplicación de rails
  • ¿Cómo usar doorkeeper con un cliente android?
  • Retrofit @Body apareciendo como parámetro en la petición HTTP
  • Creación de aplicaciones para iphone y Android para aplicaciones de rails existentes
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.