Cómo restringir / detectar la solicitud HTTP realizada a mi servidor desde una aplicación móvil que no es mi propia aplicación cliente

No estoy seguro de lo útil que es esto …

Debido a que HTTP está abierto, las aplicaciones no autorizadas siempre pueden llegar a sus servidores y su servidor tiene que rechazar el tráfico cerrando la sesión TCP inmediatamente de esas aplicaciones no autorizadas.

Una forma de autenticar su aplicación es usar criptografía simétrica o clave compartida. Básicamente, sus servidores tendrán esta clave “secreta” y sus aplicaciones tendrán la misma clave. Está utilizando la misma clave para cifrar y descifrar. Si su servidor no está descifrando el encabezado que desea usar, desconecte la sesión tcp. La limitación es que una vez que se rompe la clave compartida, pueden volver a ser invisibles.

Más a menudo, un método más simple como mirar a través de ciertos valores de encabezado HTTP. Los valores pueden provenir de la inicialización de múltiples saltos para obtener los valores correctos. Al menos esto hace que sea más difícil obtener datos de sus servidores.

Desde que mencionó Facebook, Facebook funciona bajo el usuario final con las credenciales adecuadas. El acceso de API está protegido por OAuth, es decir, autorización.
Tienes pocas opciones, todo lo cual implica
a) Autenticar al cliente
b) Hacer cumplir la autorización

La autenticación puede ser con
1) nombre de usuario / contraseña (mala idea … ya que no desea codificar el nombre de usuario y la contraseña en todos los dispositivos móviles).
2) nombre de usuario / contraseña que el usuario final puede ingresar … suponiendo que su aplicación tenga el concepto de usuario final … (a menos que sea como Yelp, donde la mayoría de los datos son de acceso público, es decir, para Yelp)
3) Esto implica un mecanismo de arranque simple a complicado que implica una operación asimétrica.

Sin algún tipo de autenticación, no puede asegurarse de que solo su aplicación móvil acceda a sus servicios HTTP (S).

Otro riesgo a considerar:
Asegúrese de elegir la opción que elija, tenga en cuenta el almacenamiento seguro de los datos en el dispositivo cliente.
Espere que el dispositivo del cliente pueda verse comprometido. (por lo tanto, no se comparte nombre de usuario / contraseña). Si está comprometido, puede aislar a un solo dispositivo / un usuario en lugar de toda la base de usuarios.