Estoy tratando de encontrar una manera de implementar la autenticación basada en token para una API REST sin la necesidad de SSL. El objetivo aquí es evitar el envío de información sensible a través del cable.
Estaba pensando en el siguiente enfoque:
Paso 1 : el cliente solicita el token de solicitud del servidor y le proporciona un nombre de usuario.
Paso 2 : el servidor devuelve la contraseña de usuario salt & solicitud de marca de tiempo.
Paso 3 : el cliente luego calcula el hash de la contraseña basándose en salt + contraseña real (capturada a través de la entrada)
Paso 4 : el cliente luego genera el token con hash de contraseña de hash y marca de tiempo de solicitud.
Paso 5 : el cliente envía el token & nombre de usuario & solicitar la marca de tiempo al servidor
Paso 6 : el servidor verifica la autenticación al generar nuevamente el mismo token con los detalles proporcionados.
De lo que no puedo decir nada que no sea público ya está pasando por alto el cable, por lo que los rastreadores de paquetes no tendrían suerte. El token se revisa con la contraseña original (esencialmente la clave secreta) para que MitM esté cubierto. Finalmente, la marca de tiempo original de la solicitud inicial se devuelve (y es parte del hash), por lo que los ataques de Replay deberían estar fuera de la cuestión.
Solo he empezado a ver la seguridad, por lo tanto, soy un principiante en esto, ¡así que cualquier ayuda / consejo sería apreciado!
Actualizar
Debería haber sido más claro con respecto a SSL ... no es que esté haciendo mi mejor esfuerzo para evitar el uso de SSL, es más adecuado para el escenario en el que no es una opción. Además, dirija sus respuestas más a las razones por las que este enfoque no funcionaría & si pudiera ajustarse para que funcione en lugar de "usar SSL".