Peter: Cuando usas ciertas aplicaciones móviles (por ejemplo, toma Evernote), no te redirige al sitio web para otorgar permiso a la aplicación. En su lugar, simplemente inicie sesión con su nombre de usuario y contraseña, directamente dentro de la aplicación.
En realidad Evernote usa OAuth . OAuth2 permite diferentes flujos de trabajo de autenticación. La concesión de credenciales de la contraseña del propietario del recurso no abre un sitio web.
Peter: Entonces, me pregunto cómo funciona esto y dónde buscar para implementar esto. ¿Se guarda la contraseña en el dispositivo y se envía al sitio web?
Un Android Authenticator puede almacenar un token de autenticación, así como una contraseña en el dispositivo. El autenticador utilizará el token de autenticación, si está disponible, para acceder a su aplicación web. Si no hay un token disponible, intentará obtener uno con la contraseña, que se recuperará a través de un cuadro de diálogo de inicio de sesión. Por lo tanto, podría evitar almacenar la contraseña, pero tan pronto como el token de autenticación caduque, aparecerá el cuadro de diálogo de inicio de sesión. También Google recomienda evitar las contraseñas cuando sea posible:
En general, recomendamos minimizar la frecuencia de solicitud de credenciales de usuario, para que los ataques de phishing sean más visibles y tengan menos probabilidades de éxito. En su lugar, use un token de autorización y actualícelo.
Peter: ¿Esto es realmente seguro?
Puede asumir que las contraseñas se almacenan de forma segura. En pocas palabras, Android funciona como un sistema Linux, donde cada aplicación es ejecutada por otro usuario, por lo que las aplicaciones no pueden acceder entre sí sin API públicas. Tenga en cuenta que un teléfono Android rooteado debilita ese mecanismo .
Si desea omitir la implementación de OAuth, puede crear un servicio de inicio de sesión más simple, que devuelva un token de autenticación (por ejemplo, un identificador de sesión), pero como siempre al implementar su sistema de seguridad, existen muchos inconvenientes. Por lo tanto, le aconsejo que busque un marco OAuth (por ejemplo, Apache Oltu ) y implementa un autenticador de Android de forma estándar.