.NET

Couchbase .NET 2.0 SDK Developer Preview 2

Observação: Exemplo e binários DP2 atualizados em 13/06/2014

Introdução

No mês passado, lançamos o Developer Preview 1 do Couchbase .NET SDK 2.0, que apresentava suporte para operações gerais de chave/valor, uma nova API View Query e, provavelmente o mais interessante, uma prévia da nossa nova linguagem de consulta, N1QL (pronuncia-se "nickel"). Você pode ler mais sobre esse lançamento aqui. Este mês, estamos lançando o Developer Preview 2 (doravante DP2) do Couchbase .NET SDK 2.0, repleto de novos recursos para dar suporte ao nosso próximo lançamento do Couchbase Server 3.0, ainda este ano!

Suporte a SSL

Atualmente, a comunicação entre o Couchbase Server e o SDK do cliente é feita por meio de canais não seguros. Com o Couchbase Server 3.0, Camadas de soquete seguro (SSL) permitirá, opcionalmente, que essa comunicação seja feita por meio de um canal seguro e criptografado.

A ativação do SSL requer algumas coisas:

  • Couchbase Server 3.0 (Beta a ser disponibilizado no final deste verão)
  • Um certificado SSL (adquirido do Couchbase Server 3.0)
  • Alterações de configuração no cliente: definição de useSsl = true em um bucket ou configuração de cluster
  • Armazenamento do certificado no repositório de Autoridades de Certificação Raiz Confiáveis (no Windows)

Nesse ponto, tudo o que você precisa fazer é ativar o suporte a SSL no cliente. Para isso, você pode ativá-lo no nível do cluster ou por bucket. A configuração do suporte a SSL no nível do cluster significa que todos os buckets dentro do cluster usarão SSL. Se desejar usar o SSL somente em Buckets específicos, basta configurar o Bucket individual para usar o SSL.

var configuration = new ClientConfiguration
{
UseSsl = true
};
CouchbaseCluster.Initialize(configuration);
var cluster = CouchbaseCluster.Get();

Observe que, se você definir UseSSL como verdadeiro no nível do cluster, ele substituirá qualquer configuração definida no nível do Bucket.

Aguarde uma postagem futura sobre a configuração do SSL em detalhes no futuro.

Autenticação CRAM-MD5

O Couchbase Server usa Camada de segurança e autenticação simples (SASL) para autenticar a interação do usuário nos níveis do servidor e do bucket. O SASL fornece vários mecanismos para lidar com a autenticação. Em sua forma mais simples, ele usa um mecanismo de texto simples que envia o nome de usuário e a senha entre os clientes em sua forma de texto simples.

O envio de nome de usuário e senha pela rede em texto simples não é inerentemente seguro e, potencialmente, abre espaço para todos os tipos de ataques de filtragem e detecção usando ferramentas disponíveis publicamente, como o Wire Shark. No entanto, com o lançamento do Couchbase 2.2 no ano passado, há suporte para a autenticação CRAM-MD5 SASL no servidor e, agora, com o DP2, ela também está disponível no SDK do .NET.

O que CRAM-MD5 O SASL usa um mecanismo de autenticação de desafio-resposta para garantir que a senha seja transformada em hash entre o cliente e o servidor. Como isso funciona, o cliente inicia a comunicação e o servidor responde com um desafio. Em seguida, o cliente usa o desafio para criar HMAC-MD5 da senha e algumas informações adicionais e as envia de volta ao servidor. O servidor usa o mesmo desafio para comparar a resposta esperada. Se elas coincidirem, a autenticação continua e, se for bem-sucedida, o cliente recebe acesso ao recurso.

Observe que, para ativar a CRAM-MD5 no cliente, você não precisa fazer nada! Quando o cliente inicia a comunicação, ele solicita uma lista de mecanismos SASL compatíveis; se o servidor ao qual está tentando se conectar for compatível com o CRAM-MD5, o cliente usará esse mecanismo.

Suporte à configuração de Web.Config e App.Config

No DP1, mostramos como configurar programaticamente o cluster e os Buckets. No DP2, adicionamos suporte à configuração do Web.config e do App.config. Aqui está um exemplo 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>

 

Comece criando um sectionGroup em configSections para a CouchbaseClientSection que será definida posteriormente no arquivo de configuração. Dentro do sectionGroup, crie uma nova seção e dê um nome a ela; neste caso, estamos usando uma seção apropriadamente chamada "couchbase". Na seção "couchbase", você pode especificar um conjunto de servidores a serem usados para inicialização e os Buckets com os quais deseja trabalhar. Um Bucket especifica o elemento connectionPool que fornece um meio de configurar o pool de conexão TCP interno para uma instância do Bucket.

Suporte adicional ao operador

As operações Insert e Get foram liberadas no DP1; no DP2, as operações suportadas foram expandidas para incluir o seguinte:

  • Upsert: atualiza uma chave se ela existir, caso contrário, adiciona-a.
  • Replace: atualiza uma chave se ela existir, falhando se não existir
  • Remove: remove uma chave do banco de dados

Além disso, várias operações internas de suporte ao SASL CRAM-MD5 estão incluídas nesta versão. Espere um conjunto completo de operações, incluindo Check and Swap (CAS) e suporte para restrições de durabilidade no Beta 1, a ser lançado no próximo mês.

Obtendo os bits

Você pode fazer o download do DP2 em aqui e temos um exemplo muito simples aqui. Como qualquer software em pré-lançamento, é provável que haja bugs e você pode esperar que as coisas mudem nas versões subsequentes, portanto, não use a DP2 na produção! Se você encontrar um bug, quiser fornecer feedback (esperamos que sim) ou sugerir um recurso, sinta-se à vontade para enviar um comentário ou criar um NCBC aqui.

Compartilhe este artigo
Receba atualizações do blog do Couchbase em sua caixa de entrada
Esse campo é obrigatório.

Autor

Postado por Jeff Morris, engenheiro de software sênior, Couchbase

Jeff Morris é engenheiro de software sênior da Couchbase. Antes de ingressar na Couchbase, Jeff passou seis anos na Source Interlink como arquiteto da Web corporativa. Jeff é responsável pelo desenvolvimento dos SDKs do Couchbase e pela integração com o N1QL (linguagem de consulta).

Deixe um comentário

Pronto para começar a usar o Couchbase Capella?

Iniciar a construção

Confira nosso portal do desenvolvedor para explorar o NoSQL, procurar recursos e começar a usar os tutoriais.

Use o Capella gratuitamente

Comece a trabalhar com o Couchbase em apenas alguns cliques. O Capella DBaaS é a maneira mais fácil e rápida de começar.

Entre em contato

Deseja saber mais sobre as ofertas do Couchbase? Deixe-nos ajudar.