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:
<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í.