¿Cuál es la diferencia entre autenticación implícita y básica?

Resuelto Dot Freelancer asked hace 12 años • 3 respuestas

¿ Cuál es la diferencia entre autenticación implícita y básica ?

Dot Freelancer avatar Mar 02 '12 21:03 Dot Freelancer
Aceptado

La autenticación implícita comunica las credenciales en forma cifrada aplicando 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.

Mientras que la autenticación básica utiliza codificación base64 no cifrada .

Por lo tanto, la autenticación básica generalmente solo debe usarse cuando se proporciona seguridad de capa de transporte, como https.

Consulte RFC-2617 para conocer todos los detalles sangrientos.

Andy avatar Mar 02 '2012 14:03 Andy

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

La autenticación básica utiliza codificación base64 (no cifrado) para generar nuestra cadena criptográfica que contiene la información de nombre de usuario y contraseña. No es necesario implementar HTTP Basic a través de SSL, pero si no lo hace, no es seguro en absoluto. Así que ni siquiera voy a considerar la idea de usarlo sin él.

Ventajas:

  • Es fácil de implementar, por lo que los desarrolladores de sus clientes tendrán menos trabajo que hacer y tardarán menos en realizar la entrega, 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.
  • Sólo 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 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 control de los clientes o puede asegurarse de que utilicen SSL, HTTP Basic es una buena opción. La lentitud del SSL puede cancelarse con la velocidad de realizar una sola solicitud

Sintaxis de autenticación básica

Value = username:password
Encoded Value = base64(Value)
Authorization Value = Basic <Encoded Value> 
// at last Authorization key/value map added to http header as follows
Authorization: <Authorization Value>

Autenticación de acceso implícito HTTP La
autenticación de acceso implícito utiliza metodologías de hash (es decir, resumen significa cortar 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 (llamadomientras tantoes decir , el número usado solo una vez ), otra cadena que representa el dominio (no una página en particular, podría ser un grupo de páginas, es decir, un espacio de protección particionado) y le pide al cliente que se autentique
  • PASO 3 : el cliente responde con este nonce y una versión cifrada del nombre de usuario, contraseña y dominio (un hash)
  • PASO 4 : el servidor responde con la información solicitada si el hash del cliente coincide con su propio hash de nombre de usuario, contraseña y dominio, o un error si no

Ventajas:

  • No se envían nombres de usuario ni 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 Básico.
  • HTTP Digest es vulnerable a un ataque de seguridad de intermediario, lo que básicamente significa que podría ser pirateado.
  • HTTP Digest evita el uso de 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 es menos probable que un servidor que utiliza un cifrado fuerte para contraseñas con HTTP Basic sobre SSL comparta 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 segura que Digest.

Sintaxis de autenticación de acceso implícito RFC 2069

Hash1=MD5(username:realm:password)
Hash2=MD5(method:digestURI)
response=MD5(Hash1:nonce:Hash2)

Sintaxis de autenticación de acceso implícito 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 se ve así:

ingrese la descripción de la imagen aquí

Nota:

  • Los esquemas Básico y Digest están dedicados a la autenticación mediante un nombre de usuario y un secreto.
  • El esquema Portador está dedicado a la autenticación mediante un token. En BA (Autenticación básica), se puede considerar que el token de portador de encabezado da acceso al portador de este token.
Premraj avatar Dec 04 '2015 22:12 Premraj