.NET

Couchbase .NET 2.0 SDK Developer Preview 2

Nota: Binarios de ejemplo y DP2 actualizados el 13/06/2014.

Introducción

El mes pasado lanzamos la Developer Preview 1 de Couchbase .NET SDK 2.0, que mostraba soporte para operaciones generales clave/valor, una nueva API de View Query, y probablemente lo más interesante, un primer vistazo a nuestro nuevo lenguaje de consultas, N1QL (pronunciado "nickel"). Puedes leer más sobre esa versión aquí. Este mes, estamos lanzando la Developer Preview 2 (en adelante DP2) del SDK 2.0 de Couchbase .NET, ¡lleno de nuevas características para apoyar nuestro próximo lanzamiento de Couchbase Server 3.0 a finales de este año!

Soporte SSL

Actualmente, la comunicación entre Couchbase Server y el SDK cliente se realiza a través de canales no seguros. Con Couchbase Server 3.0, Capas de sockets seguros (SSL) permitirá opcionalmente esta comunicación a través de un canal seguro y cifrado.

Activar SSL requiere un par de cosas:

  • Couchbase Server 3.0 (Beta disponible este verano)
  • Un certificado SSL (adquirido de Couchbase Server 3.0)
  • Cambios de configuración en el cliente: establecer useSsl = true en una configuración de bucket o cluster
  • Almacenamiento del certificado en el almacén de entidades de certificación raíz de confianza (en Windows)

En este punto, todo lo que necesitas hacer es habilitar el soporte SSL en el cliente. Para ello, puede activarlo a nivel de clúster o por bucket. Si habilita SSL a nivel de clúster, todos los buckets del clúster utilizarán SSL. Si sólo desea utilizar SSL en Buckets específicos, simplemente configure su Bucket individual para utilizar SSL.

var configuration = nueva ClientConfiguration
{
UseSsl = true
};
CouchbaseCluster.Initialize(configuración);
var cluster = CouchbaseCluster.Get();

Tenga en cuenta que si establece UseSSL en true a nivel de cluster, anulará cualquier configuración establecida a nivel de Bucket.

Espere un futuro post sobre la configuración de SSL en detalle en el futuro.

Autenticación CRAM-MD5

Couchbase Server utiliza Capa de autenticación y seguridad simple (SASL) para autenticar la interacción del usuario a nivel de Servidor y de Bucket. SASL proporciona varios mecanismos para manejar la autenticación. En su forma más simple, utiliza un mecanismo de texto plano que envía el nombre de usuario y la contraseña entre los clientes en su forma de texto plano.

Enviar nombre de usuario y contraseña a través de la red en texto plano es intrínsecamente inseguro y potencialmente te abre a todo tipo de ataques de filtrado y sniffing usando herramientas disponibles públicamente como Wire Shark. Sin embargo, con el lanzamiento de Couchbase 2.2 el año pasado, la autenticación CRAM-MD5 SASL en el servidor está soportada, y ahora con DP2 también está disponible desde el SDK .NET.

Qué CRAM-MD5 SASL utiliza un mecanismo de autenticación desafío-respuesta para garantizar que la contraseña se convierte en hash entre el cliente y el servidor. El cliente inicia la comunicación y el servidor responde con un desafío. A continuación, el cliente utiliza el desafío para crear HMAC-MD5 de la contraseña y alguna información adicional y lo envía de vuelta al servidor. El servidor utiliza el mismo desafío para comparar la respuesta esperada. Si coinciden, la autenticación continúa y, si tiene éxito, se concede al cliente acceso al recurso.

Tenga en cuenta que para habilitar CRAM-MD5 en el cliente no tiene que hacer nada. Cuando el cliente inicia la comunicación solicita una lista de mecanismos SASL soportados, si el servidor al que intenta conectarse soporta CRAM-MD5, entonces el cliente utilizará ese mecanismo.

Compatibilidad con Web.Config y App.Config

En DP1, mostramos cómo configurar mediante programación su cluster y Buckets. En DP2, añadimos soporte para la configuración Web.config y App.config. Aquí hay un ejemplo de App.config:

<?xml version=”1.0″ encoding=”utf-8″ ?>
<configuration>
<configSections>
<sectionGroup name=”couchbaseClients”>

</sectionGroup>
</configSections>
<couchbaseClients>
<couchbase>
<servers>
<add uri=”http://localhost:8091″></add>
</servers>
<buckets>
<add name=”default” password=”” useSsl=”false”>
<connectionPool name=”custom” maxSize=”10″ minSize=”5″ waitTimeout=”5000″ shutdownTimeout=”3000″></connectionPool>
</add>
</buckets>
</couchbase>
</couchbaseClients>
<startup>
<supportedRuntime version=”v4.0″ sku=”.NETFramework,Version=v4.5″ />
</startup>
</configuration>

 

Empieza creando un sectionGroup bajo configSections para la CouchbaseClientSection que definirás más adelante en el fichero de configuración. Dentro del sectionGroup creas una nueva sección y le das un nombre, en este caso estamos usando una sección llamada "couchbase". Dentro de la sección "couchbase" puedes especificar un conjunto de servidores a utilizar para el bootstrapping y los Buckets con los que deseas trabajar. Un Bucket especifica el elemento connectionPool que proporciona un medio para configurar el pool de conexiones TCP interno para una instancia de Bucket.

Apoyo adicional al operador

Las operaciones Insert y Get se lanzaron en DP1, en DP2 las operaciones soportadas se ampliaron para incluir las siguientes:

  • Upsert: actualiza una clave si existe, en caso contrario la añade.
  • Reemplazar: actualiza una clave si existe, fallando si no existe.
  • Eliminar: elimina una clave de la base de datos

Además, en esta versión se incluyen una serie de operaciones internas para soportar SASL CRAM-MD5. La versión Beta 1, que se publicará el mes que viene, incluirá un conjunto completo de operaciones, como Check and Swap (CAS) y compatibilidad con restricciones de durabilidad.

Obtener los bits

Puede descargar DP2 desde aquí y tenemos un ejemplo muy sencillo aquí. Como ocurre con cualquier versión preliminar de software, es probable que haya errores y que las cosas cambien en versiones posteriores, así que no utilice DP2 en producción. Si encuentra algún error, desea hacernos llegar sus comentarios (esperamos que así sea) o quiere sugerir alguna función, no dude en enviar un comentario o crear un NCBC. aquí.

Comparte este artículo
Recibe actualizaciones del blog de Couchbase en tu bandeja de entrada
Este campo es obligatorio.

Autor

Publicado por Jeff Morris, Ingeniero Superior de Software, Couchbase

Jeff Morris es Ingeniero de Software Senior en Couchbase. Antes de unirse a Couchbase, Jeff pasó seis años en Source Interlink como Arquitecto Web Empresarial. Jeff es responsable del desarrollo de los SDK de Couchbase y de cómo integrarse con N1QL (lenguaje de consulta).

Deja un comentario

¿Listo para empezar con Couchbase Capella?

Empezar a construir

Consulte nuestro portal para desarrolladores para explorar NoSQL, buscar recursos y empezar con tutoriales.

Utilizar Capella gratis

Ponte manos a la obra con Couchbase en unos pocos clics. Capella DBaaS es la forma más fácil y rápida de empezar.

Póngase en contacto

¿Quieres saber más sobre las ofertas de Couchbase? Permítanos ayudarle.