Luego de mucho batallar hemos hallado la contestación de este inconveniente que ciertos de nuestros lectores de este espacio han tenido. Si quieres compartir algún detalle no dejes de aportar tu conocimiento.
Solución:
La autenticación implícita comunica las credenciales de forma cifrada mediante la aplicación de una función hash a: el nombre de usuario, la contraseña, un valor nonce proporcionado por el servidor, el método HTTP y el URI solicitado.
Considerando que la autenticación básica utiliza no cifrado codificación base64.
Por lo tanto, la autenticación básica generalmente solo debe usarse cuando se proporciona seguridad de la capa de transporte, como https.
Consulte RFC-2617 para conocer todos los detalles sangrientos.
Autenticación de acceso básico HTTP
- PASO 1 : el cliente realiza una solicitud de información, enviando un nombre de usuario y contraseña al servidor en texto plano
- PASO 2 : el servidor responde con la información deseada o un error
Usos de autenticación básica base64 codificación (no cifrado) para generar nuestro criptográfico string que contiene la información de nombre de usuario y contraseña. HTTP Basic no necesita implementarse sobre SSL, pero si no lo hace, no es seguro en absoluto. Así que ni siquiera voy a considerar la idea de usarlo sin él.
Pros:
- Es simple de implementar, por lo que los desarrolladores de sus clientes tendrán menos trabajo que hacer y tardarán menos en entregar, por lo que es más probable que los desarrolladores quieran usar su API
- A diferencia de Digest, puede almacenar las contraseñas en el servidor con cualquier método de cifrado que desee, como bcrypt, lo que hace que las contraseñas sean más seguras.
- Solo se necesita una llamada al servidor para obtener la información, lo que hace que el cliente sea un poco más rápido que los métodos de autenticación más complejos.
Contras:
- SSL es más lento de ejecutar que HTTP básico, por lo que esto hace que los clientes sean un poco más lentos
- Si no tiene el control de los clientes y no puede obligar al servidor a usar SSL, es posible que un desarrollador no use SSL, lo que genera un riesgo de seguridad.
En resumen – Si tiene el control de los clientes o puede asegurarse de que usen SSL, HTTP Basic es una buena opción. La lentitud del SSL se puede cancelar con la velocidad de realizar una sola solicitud.
Sintaxis de autenticación básica
Value = username:password
Encoded Value = base64(Value)
Authorization Value = Basic
//at last Authorization key/value map added to http header as follows
Authorization:
Autenticación de acceso HTTP Digest
La autenticación de acceso de resumen utiliza las metodologías de hash (es decir, el resumen significa cortado en trozos pequeños) para generar el resultado criptográfico. La autenticación de acceso HTTP Digest es una forma más compleja de autenticación que funciona de la siguiente manera:
- PASO 1 : un cliente envía una solicitud a un servidor
- PASO 2 : el servidor responde con un código especial (llamado nonce ie norteámbar usado solamente una vez), otro string representando el reino(un hash) y le pide al cliente que se autentique
- PASO 3 : el cliente responde con este nonce y una versión encriptada del nombre de usuario, contraseña y reino (un hash)
- PASO 4 : el servidor responde con la información solicitada si el hash del cliente coincide con su propio hash del nombre de usuario, contraseña y reino, o un error si no
Pros:
- No se envían nombres de usuario o contraseñas al servidor en texto plano, lo que hace que una conexión que no sea SSL sea más segura que una solicitud HTTP básica que no se envía a través de SSL. Esto significa que no se requiere SSL, lo que hace que cada llamada sea un poco más rápida
Contras:
- Por cada llamada necesaria, el cliente debe realizar 2, lo que hace que el proceso sea un poco más lento que HTTP Basic
- HTTP Digest es vulnerable a un ataque de seguridad man-in-the-middle, lo que básicamente significa que podría ser pirateado
- HTTP Digest evita el uso del cifrado de contraseña seguro, lo que significa que las contraseñas almacenadas en el servidor podrían ser pirateadas
En resumen, HTTP Digest es inherentemente vulnerable a al menos dos ataques, mientras que un servidor que utiliza un cifrado fuerte para contraseñas con HTTP Basic sobre SSL tiene menos probabilidades de compartir estas vulnerabilidades.
Sin embargo, si no tiene control sobre sus clientes, podrían intentar realizar la autenticación básica sin SSL, que es mucho menos seguro que Digest.
Sintaxis de autenticación de acceso implícita RFC 2069
Hash1=MD5(username:realm:password)
Hash2=MD5(method:digestURI)
response=MD5(Hash1:nonce:Hash2)
Sintaxis de autenticación de acceso implícita RFC 2617
Hash1=MD5(username:realm:password)
Hash2=MD5(method:digestURI)
response=MD5(Hash1:nonce:nonceCount:cnonce:qop:Hash2)
//some additional parameters added
fuente y ejemplo
En Postman tiene el siguiente aspecto:
Nota:
- los Esquemas básicos y resumidos se dedican a la autenticación mediante un nombre de usuario y un secreto.
- los Esquema al portador se dedica a la autenticación mediante un token.
Veamos la diferencia entre los dos HTTP autenticación usando Wireshark
(Herramienta para analizar paquetes enviados o recibidos).
1. Autenticación básica Http
Tan pronto como el cliente ingrese el usuario Contraseña, según lo solicitado por el servidor web, el servidor web comprueba en la base de datos si las credenciales son correctas y da acceso al recurso.
Así es como se envían y reciben los paquetes:
En el primer paquete, el Cliente completa las credenciales usando el CORREO método en el recurso – lab/webapp/basicauth
.A cambio, el servidor responde con un código de respuesta http 200 ok , es decir, el nombre de usuario: contraseña eran correctos.
Ahora, en el Authorization
encabezado muestra que es Básico Autorización seguida de algunos aleatorios string .Esta cadena es la codificado (Base64) versión de las credenciales admin:aadd
(incluidos los dos puntos).
2. Autenticación Http Digest(rfc 2069)
Hasta ahora hemos visto que la Autenticación Básica envía usuario Contraseña en texto plano a través de la red. Pero Digest Auth envía un PICADILLO de la Contraseña usando el algoritmo Hash.
Aquí hay paquetes que muestran las solicitudes realizadas por el cliente y la respuesta del servidor.
Tan pronto como el cliente escribe las credenciales solicitadas por el servidor, la contraseña se convierte en un response
utilizando un algoritmo y luego se envía al servidor, si la base de datos del servidor tiene la misma respuesta que la dada por el cliente, el servidor da acceso al recurso; de lo contrario, un 401 error .
En lo de arriba Authorization
, los response
string se calcula utilizando los valores de Username
,Realm
,Password
,http-method
,URI
y Nonce
como se muestra en la imagen:
(se incluyen los dos puntos)
Por lo tanto, podemos ver que la autenticación implícita es más segura, ya que implica Hashing (cifrado MD5), por lo que las herramientas de rastreo de paquetes no pueden rastrear la contraseña, aunque en la autenticación básica se mostró la contraseña exacta en Wireshark.
Si haces scroll puedes encontrar las crónicas de otros administradores, tú además tienes la opción de dejar el tuyo si te gusta.