La autenticación SCRAM es una de las novedades de la versión 4.5. Consulte esta entrada del blog para una introducción sobre SCRAM en Couchbase.

En este artículo veremos cómo monitorizar el handshake SCRAM desde Java.

Primero, no tienes que hacer nada especial desde tu código Java para usar SCRAM. SCRAM está activado por defecto, y se utilizará si tu versión de Java SDK es 2.2.5 o superior y tu versión de Couchbase Server es 4.5 o superior.

SCRAM se utilizará cuando abras un cubo con contraseña.

Para monitorizar la autenticación SCRAM desde su código Java, simplemente establezca su nivel de depuración a FINEST:

Ahora, en algún punto de tu código accedes al cubo:

Ahora puedes ver la conversación de autenticación:

Mostramos aquí sólo los pasos en los que el servidor informa sobre el método de autenticación soportado y el cliente elige el más fuerte. En este handshake el servidor soporta:

  • SCRAM-SHA512
  • SCRAM-SHA256
  • SCRAM-SHA1
  • CRAM-MD5 LISO

Y el cliente elige el más fuerte: SCRAM-SHA512

El mismo código ejecutado contra Couchbase 4.1 produce este resultado:

Aquí puede ver cómo se selecciona CRAM-MD5.

También puedes monitorizar la autenticación olfateando el tráfico de red. Una gran herramienta para esta tarea es wireshark. Puedes coger tráfico y luego filtrar por protocolo "Couchbase":

ws_scram

Para terminar, probablemente te habrás dado cuenta de lo fácil que es monitorizar el handshake de autenticación, por eso recomendamos usar TLS en tu autenticación cliente-servidor.

De este modo, se evita un ataque de tipo "hombre en el medio", ya que SCRAM utiliza la autenticación mutua y el servidor debe responder a un desafío para demostrar que conoce el "secreto" basado en la contraseña hash del cliente.

¡Feliz autentificación!

Autor

Publicado por El equipo de Couchbase

Jennifer Garcia es Gerente Senior de Web en Couchbase Inc. Como responsable del sitio web, Jennifer tiene la responsabilidad general de las propiedades del sitio web, incluido el diseño, la implementación, el contenido y el rendimiento.

Dejar una respuesta