aplicación nativa: inicie sesión con nombre de usuario y contraseña

1

Tengo una API web, por ahora usa oauth2 tipo de concesión de código de autorización para comunicarme con mi aplicación nativa. El navegador web se abrirá dentro de la aplicación para ingresar el nombre de usuario y la contraseña, abrir la página de autorización, etc.
Deseo implementar la capacidad de inicio de sesión en la aplicación nativa usando el nombre de usuario y la contraseña sin vista web, ya que es nuestra aplicación nativa oficial. Suena como el tipo de concesión de credenciales de propietario de recursos . Pero obviamente es inseguro porque clientid está disponible junto con la aplicación para todos. Pero veo que funciona (credenciales dentro de la aplicación) para la aplicación oficial de Twitter y otros. Así que supongo que usan alguna lógica de autorización no oauth2 tipo de concesión de credenciales de propietario de recurso para sus aplicaciones nativas oficiales. ¿Algún pensamiento aquí? ¿Cómo construir esta comunicación de forma segura?

    
pregunta mtkachenko 21.10.2016 - 15:49
fuente

2 respuestas

1

El escenario que está intentando implementar no se recomienda en OAuth 2.0 para aplicaciones nativas

  

La mejor práctica actual para autorizar usuarios en aplicaciones nativas es      realizar la solicitud de autorización OAuth en un usuario-agente externo      (normalmente el navegador), en lugar de un agente de usuario incorporado (como      uno implementado con vistas web).

Por lo tanto, dado que ha declarado que desea implementar de forma "segura", la mejor práctica es redirigir al navegador del sistema en lugar de manejar el flujo dentro de su aplicación directamente.

Sin embargo, si decides manejar las cosas 'en la aplicación' necesitarás implementar un cliente http (agente de usuario) como parte de tu aplicación. Ese agente de usuario personalizado en su aplicación deberá manejar la serie de solicitudes y respuestas para realizar el flujo de OAuth 2 que normalmente gestionaría el navegador del sistema. Parte de esto incluiría solicitar al usuario las credenciales que se pasarían al servidor de autorización para la autenticación.

    
respondido por el feedersec 23.10.2016 - 04:24
fuente
0

Lo que está buscando es identificar a un usuario que use sus credenciales de redes sociales, entre su aplicación nativa y su servicio. Cuando recibe el token del proveedor de Identidad, lo envía a su servicio. Luego, el servicio "consulta" al proveedor de identidad para averiguar quién es este usuario. Una vez que confirme que el token es válido, creará una sesión para este usuario en ese dispositivo.

Su aplicación nativa debe usar el Flujo implícito . Esto no requiere que el cliente almacene el ID de cliente.

Usando el SDK de la plataforma, puede obtener botones "nativos" en la pantalla de inicio de sesión de su aplicación. Esta biblioteca se descarga de FB, Google, etc. para cada plataforma que desee admitir.

Nota: su aplicación habla con el proveedor de identidades utilizando Oauth2, y su servicio habla con el proveedor de identidades utilizando Oauth2. La comunicación entre su aplicación y su servicio no es parte de la especificación Oauth2.

Eche un vistazo a este artículo para obtener un excelente resumen de cómo funciona: enlace

    
respondido por el Johan 22.10.2016 - 19:24
fuente

Lea otras preguntas en las etiquetas