Tengo un .NET Web Api que da servicio a una aplicación móvil basada en Cordova y un front-end web escrito en AngularJS. He hecho un montón de investigación y la mayoría de las fuentes no dan una gran respuesta o una que es una exageración enorme para mi situación. La seguridad no es una gran preocupación, pero quiero emplear cierta cantidad de seguridad básica para garantizar que solo mi aplicación realice llamadas a mi servidor.
Todos los usuarios deben iniciar sesión a través de Facebook y no tienen sus propias contraseñas para mi aplicación. Mi idea fue que, siempre que se hayan autenticado a través de Facebook y que la solicitud se haya originado en mi aplicación, están listos para funcionar.
La pregunta es, ¿cómo me aseguro de que la solicitud proviene de mi aplicación? Durante el inicio de sesión, emito tokens de portador para que esa parte esté bien, pero ¿qué pasa con las llamadas que no requieren autorización? El principal problema que se nos viene a la mente es enviar comentarios y formularios de encuesta, odiaría a alguien con esos registros. La mejor opción que he encontrado parece ser crear un token cifrado de los parámetros de llamada más un app_secret, y adjuntarlo a la solicitud. Los problemas con eso son, ¿no podría alguien recrear eso? Y como el extremo frontal está en Javascript, pudieron encontrar la app_secret.
1) ¿Cómo puedo asegurar el servidor para garantizar que las llamadas previas al inicio de sesión se originen desde mi aplicación?