Estoy trabajando en una API REST que permitirá que una aplicación de Android se comunique con un sitio web. Lamentablemente, más de la mitad de las personas que lo van a usar no pueden hacerlo a través de HTTP, por lo que tendré que maximizar la seguridad sobre HTTP.
Lo que debe suceder es simplemente autenticarse a través de una API REST, nombre de usuario / correo electrónico y contraseña.
He pensado en mezclar la contraseña (o el nombre de usuario y la contraseña) en el lado del cliente y enviarla al servidor, pero luego terminarías simplemente con una segunda contraseña con la que cualquiera podría autenticarse. Hashear la contraseña del lado del cliente incluso significaría que si alguien obtiene acceso a la base de datos, esa persona podrá acceder a todas las cuentas.
¿De qué manera se puede autenticar de forma segura a través de HTTP? Tengo control total sobre el cliente y el servidor, por lo que realmente no hay nada que no sea posible.