válidos redirección redireccionamiento produjo porque para los lista incluido estén está error configurar configuración comprobar cliente blanca app activados acceso android ios facebook rsa digital-signature

android - redirección - Proporcionar autenticación segura de Facebook con mi servidor



uri de redirección de oauth válidos (1)

1) si. Es suficiente. Si su cliente (aplicación móvil) tiene un token, prueba que un usuario se autentica en Facebook. Entonces, usted autentificó a un usuario de esta manera. Sin embargo, no es suficiente autenticar una aplicación móvil (sobre esto, hablaré en el # 3).

2) si. Está encriptado en ambos sentidos.

3) Eso es difícil. Se llama atestación remota. Hay un montón de problemas con esto.

Antes de ir en esta dirección, debes hacerte dos preguntas

  • ¿Contra quién estás protegiendo?

  • ¿Cuánto estoy dispuesto a invertir?

Si se está protegiendo contra un estudiante con conocimientos muy limitados, quien puede escribir otra aplicación móvil que usará su servidor, entonces está bien con una firma.

Si se está protegiendo contra un ingeniero de software un poco más sofisticado (que puede aplicar ingeniería inversa a su aplicación), no será suficiente. Este ingeniero puede extraer una clave privada de su aplicación y utilizarla para firmar solicitudes en su aplicación.

Puedes leer acerca de la certificación remota here y here .

Las soluciones que pueden protegerlo de la ingeniería inversa simple son bastante complejas.

PS Respecto a la biblioteca RSA.

Mira esto para Android:

Crypto asimétrico en Android

Y esto para iOS.

Cifrado RSA usando clave pública

Me gustaría crear una pequeña aplicación móvil (Android e iOS) y un pequeño servidor backend con una API REST.

Los usuarios de mi aplicación (Android o iOS) deben iniciar sesión en Facebook. Lo hago utilizando facebooks mobile sdk. Cuando el inicio de sesión haya sido exitoso, facebook sdk devolverá un authentificationToken, que ahora está en el teléfono inteligente del usuario.

La idea es la siguiente: siempre que mi aplicación necesite algunos datos, la aplicación se conectará a mi servidor backend (REST) ​​a través de HTTPS. Por ejemplo: la aplicación realiza un HTTP GET simple y pasa la autenticación de Facebook recuperada. Mi servidor obtiene esta autenticación de Facebook y utiliza este token para determinar si el usuario está autenticado y para recuperar la información del perfil de Facebook (nombre, apellido, etc.). Entonces, el servidor se pone en contacto con Facebook y genera la respuesta personalizada para la solicitud HTTP GET.

Mis preguntas son:

  1. ¿Es realmente suficiente pasar este token de autenticación de Facebook para cada llamada a la API REST para que el servidor recupere el usuario de Facebook asociado correcto?
  2. Yo uso HTTPS, así que supongo que la conexión está lo suficientemente encriptada, ¿verdad?
  3. Supongo que necesito algún mecanismo de firma, así que firme cada llamada a la API REST (a través de HTTPS) para garantizar que el token de autenticación de Facebook se haya enviado solo desde mi aplicación móvil. Lo haría utilizando RSA con SHA-1 para firmar cualquier llamada a la API REST. Pero el problema con este enfoque es que el cliente debe almacenar la clave privada en algún lugar de la Aplicación (para firmar solicitudes) y el servidor conoce la clave pública (para la coincidencia de firmas). ¿Es esto correcto? Si es así, supongo que es un gran problema de seguridad, ya que una aplicación móvil (especialmente Android) podría ser descompilada para obtener la clave privada. ¿Cómo almaceno esta clave privada de forma segura en mi aplicación? ¿Hay otro sistema para firmar que puedas recomendar?

Bt: ¿Conoces una buena libreta RSA para iOS y Android?