authentication - proyecto - programas para crear aplicaciones moviles gratis
Cómo autorizar aplicaciones móviles con un tercero a través de un PERO PERO se conecta a mi servicio, no a un tercero (1)
Algunos colegas y yo hicimos una vez un proyecto bastante similar en la naturaleza, allá por la universidad. Autenticamos a nuestros usuarios a través de Facebook o Foursquare, utilizando sus respectivas API de OAuth.
La versión nativa de Android de la aplicación abrió una WebView
con la página de inicio del proveedor de OAuth, que redirigió a nuestro servicio después de la autenticación. Luego, nuestro servicio hizo una solicitud para el token OAuth del proveedor OAuth (Foursquare tiene algunas instrucciones bastante simples ). Cuando obtuvimos ese token, configuramos una sesión utilizando cookies, a las que podríamos acceder desde la aplicación.
Para validar las sesiones, solo verificamos si el token de acceso aún era válido con el proveedor. También utilizamos las ID de usuario únicas de los respectivos proveedores para distinguir a los usuarios.
Entonces sí, lo que funcionó para nosotros es: haga que la aplicación autentique y autorice su servicio , no la aplicación en sí.
Mi aplicación está diseñada de la siguiente manera: tengo un servicio web (que se ejecuta en GAE, no es muy relevante para esta pregunta) y los datos que contiene este servicio están disponibles a través de un sitio web y aplicaciones móviles y de escritorio.
Actualmente, el usuario se autentica en el sitio web a través de Google ClientLogin y las aplicaciones se autentican / se autorizan a través del proveedor integrado de GAE. (OAuth se usa aquí principalmente para la autenticación, mi aplicación no utiliza ningún dato externo a través de OAuth que no sea la ID única y la dirección de correo electrónico del usuario).
Lo que me gustaría hacer es ampliar la cantidad de servicios que los usuarios pueden usar para iniciar sesión. Debido al factor de complicación de las aplicaciones, parece que necesito OAuth. Pero realmente no puedo conceptualizar correctamente cómo debería ir este flujo.
Tomemos Facebook como ejemplo. Cuando una aplicación móvil pasa a través del flujo de Facebook o adquiere un token de acceso, esto no es suficiente, ya que es mi servicio, no la aplicación, lo que realmente necesita hablar con Facebook para recuperar información de contacto y una ID de usuario única. Esto me lleva a pensar que el proceso OAuth debe ocurrir en el contexto de mi servicio, y no de la aplicación móvil. Luego, mi servicio se convierte en el consumidor y Facebook en el proveedor de servicios, y el servicio se mantiene en el token de acceso de usuario, lo que sucede cuando un usuario configura su cuenta por primera vez.
Si este es el enfoque correcto, ¿dónde deja eso la autenticación para las aplicaciones? ¿Qué sucede cuando el usuario ya tiene una cuenta e instala una instancia nueva de una aplicación móvil? Me imagino que también pasaré por el proceso auth, haciendo coincidir las credenciales con los datos ya almacenados por mi servicio y luego emitir mi propio "token de acceso" a la aplicación desde el servicio, para autorizar esa instancia de la aplicación. Esto parece enrevesado y pirateado.
Estoy seguro de que no puedo ser la única persona que está en efecto "tomando prestado" el sistema de cuentas de un tercero para una aplicación móvil con un backend, pero realmente no veo cuál es la forma correcta de hacer esto.
¿Qué es lo que no veo y / o me equivoco conceptualmente?