Tengo un servicio web REST que ya implementa un mecanismo de autenticación a través del navegador.
Quisiera exponer mi API a una serie de clientes móviles programados por terceros. En este escenario intervienen 4 actores:
- Mi aplicación web A
- El proveedor de autenticación P (por ejemplo, Facebook / Google / Twitter / etc)
- El cliente de aplicaciones móviles C (creado por un desarrollador externo X)
- El usuario final U
Leí mucho acerca de la autenticación de dos patas y de tres patas con Oauth2 pero Entendí que ninguna de las dos son soluciones factibles.
El primero porque involucra solo a C y P .
El último porque involucra a A , P y U (es decir, A y C son productos del mismo desarrollador).
Para la autenticación del cliente, realmente manejo la situación generando un par de claves para el desarrollador del cliente C solicitando autenticar sus aplicaciones contra mi servicio A y firma cada solicitud. Mi pregunta es: ya que mi aplicación está registrada naturalmente en developers.facebook.com y mis claves se almacenan en el servidor web, ¿cómo puede el desarrollador externo usar mi API? y autenticar al usuario final? ¿Debe registrar su aplicación móvil C en Facebook y compartir su token de acceso con mi aplicación web A ?