¿En qué se diferencia la autenticación implícita de la autenticación básica además del envío de credenciales como texto sin formato?
digest-authentication
SoftwareGeek
fuente
fuente
Respuestas:
La principal diferencia es que no requiere enviar el nombre de usuario y la contraseña a través del cable en texto plano. También es inmune a los ataques de repetición, ya que utiliza un número único del servidor.
El servidor le da al cliente un número de uso único (un nonce) que combina con el nombre de usuario, reino, contraseña y la solicitud de URI. El cliente ejecuta todos esos campos a través de un método hash MD5 para producir una clave hash.
Envía esta clave hash al servidor junto con el nombre de usuario y el reino para intentar autenticarse.
En el lado del servidor, se usa el mismo método para generar una clave hash, solo que en lugar de usar la contraseña ingresada en el navegador, el servidor busca la contraseña esperada para el usuario en su base de datos de usuario. Busca la contraseña almacenada para este nombre de usuario, se ejecuta mediante el mismo algoritmo y la compara con lo que envió el cliente. Si coinciden, se concede acceso; de lo contrario, puede devolver un 401 No autorizado (sin inicio de sesión o inicio de sesión fallido) o un 403 Prohibido (acceso denegado).
La autenticación implícita está estandarizada en RFC2617 . Hay una buena descripción general en Wikipedia :
Puedes pensar en ello así:
fuente
Se envía un hash de las credenciales por cable.
Wikipedia tiene un excelente artículo sobre este tema.
fuente
La única forma de obtener el hash HA1 de las credenciales es conocer la contraseña. El servidor conoce HA1 pero no la contraseña que la generó. Si un atacante conocía HA1, podría ingresar al sistema. Entonces no se envía por el cable. Se realiza un hash adicional basado en nonce, etc. antes de hacer esto, y esto debe coincidir con un cálculo similar realizado en el servidor. Por lo tanto, mientras el servidor mantenga la privacidad de HA1, el sistema es seguro.
fuente