Na versão de desenvolvedor de março, você pode começar a ver algumas mudanças importantes na autenticação e na autorização dentro do RBAC (Role Based Access Control, Controle de Acesso Baseado em Função) chegando ao Couchbase Server. Essas alterações são um trabalho em andamento: a compilação do desenvolvedor é essencialmente uma compilação noturna que é liberada para o público. Mas há algumas coisas boas no RBAC que valem a pena ficar animadas!

Ir Faça o download da versão de desenvolvedor 5.0.0 de março do Couchbase Server Hoje. Certifique-se de clicar na guia "Desenvolvedor" para obter a versão de desenvolvedor (DB) e dar uma olhada nela. Você ainda tem tempo para nos dar um feedback antes do lançamento oficial.

Lembre-se de que estou escrevendo esta postagem do blog em versões iniciais, e algumas coisas podem sofrer pequenas alterações quando você receber o lançamento, e algumas coisas ainda podem apresentar erros.

Autenticação e autorização

Apenas um lembrete rápido da diferença entre autenticação e autorização:

  • Autenticação é o processo de identificação de que um usuário é quem ele diz ser.
  • Autorização é o processo de garantir que o usuário tenha permissão para fazer o que está tentando fazer.

Se você já usou o Couchbase antes, está familiarizado com o login no que às vezes chamamos de "Admin Web Console".

Couchbase authentication screen

No entanto, o Console da Web não é apenas para administradores, mas também para desenvolvedores. Mas, até agora, você não tinha muito controle incorporado ao Couchbase sobre quem pode fazer login e (o que é mais importante) o que eles podem fazer.

Portanto, gostaria de apresentar a você o novo recurso de usuário de primeira classe do Couchbase.

Usuários

Ainda há um usuário administrador completo. Esse é o login que você cria quando instala o Couchbase pela primeira vez. Esse é o usuário que não tem restrições e pode fazer qualquer coisa, inclusive criar novos usuários. Assim, por exemplo, um administrador completo pode ver o link "Security" (Segurança) na navegação, enquanto outros usuários não podem.

Security link to manage authentication and authorization

Agora, uma vez nessa página de segurança, você pode adicionar, editar e excluir usuários.

A usuário pode identificar uma pessoa, mas também pode identificar algum serviço ou processo. Por exemplo, se estiver escrevendo um aplicativo ASP.NET, talvez queira criar um usuário com um conjunto limitado de permissões chamado "web-service". Portanto, as credenciais para esse "usuário" não seriam para uma pessoa, mas para um aplicativo ASP.NET.

Em seguida, tente adicionar um novo usuário do Couchbase clicando em "+ Adicionar usuário". Vou criar um usuário chamado "fts_admin", com um nome de "Full Text Search Admin", uma senha e uma única função: FTS Admin do bucket de amostra de viagem (FTS = Full Text Search).

Adição de um novo usuário

Aqui está uma animação da adição desse usuário:

Add a new user with Couchbase authentication

Algumas observações sobre a animação acima:

  • Selecionei "Couchbase" em vez de "External". External destina-se à integração com LDAP. Observe que "Couchbase" (autenticação interna) provavelmente se tornará o padrão em versões futuras.
  • O FTS Admin dá ao usuário permissão para fazer tudo com as pesquisas de texto completo: criar, modificar, excluir e executá-las.
  • Concedi a permissão FTS Admin somente para o bucket de amostra de viagem. Se eu selecionasse "all", isso concederia permissão a todos os buckets, mesmo os criados no futuro.
  • Os usuários com a função FTS Searcher só têm acesso para executar pesquisas, não para modificá-las ou criá-las.

Mais informações sobre a diferença entre o FTS Admin e o FTS Searcher mais adiante.

Fazer login como um novo usuário

Agora que esse usuário foi criado, posso fazer login como fts_admin. A autenticação desse usuário é tratada no Couchbase.

Login with Couchbase authentication

Primeiro, na animação acima, observe que o usuário fts_admin tem um conjunto muito mais limitado de opções em comparação com o usuário administrador completo.

Em seguida, vale a pena ressaltar que os usuários podem redefinir suas senhas:

Reset password

Criação de um índice FTS

Como já criei um usuário fts_admin com o parâmetro Administrador do FTS criarei outro usuário chamado fts_searcher que tenha apenas a função Pesquisador FTS para o balde de amostras de viagem.

List of users

Uso da API REST para FTS

Vou usar a API REST para demonstrar que esses usuários são limitados pelas funções que lhes dei. Se precisar de uma atualização sobre a API REST, você pode consultar a documentação da API de pesquisa de texto completo. Observe também que estou usando a API REST porque há alguns bugs na interface do usuário no momento em que estou escrevendo este texto.

Vamos começar criando um novo índice de pesquisa de texto completo (FTS). Farei isso por meio de Carteiromas você pode usar enrolar ou Violinista ou qualquer ferramenta REST de sua preferência.

Criar um índice FTS

Para criar um índice com a API REST, preciso fazer uma solicitação PUT para o arquivo /api/index/ ponto final.

  • Primeiro, criarei um índice para o tipo "hotel" no bucket de amostra de viagem, portanto, farei um PUT para /api/index/hotéis
  • Além disso, as credenciais podem ser colocadas no URL para usar a autenticação básica
  • Além disso, os pontos de extremidade REST estão disponíveis na porta 8094

Por fim, o URL da solicitação PUT deve ser semelhante a este:

O corpo do PUT é um grande objeto JSON. Abaixo está parte dele. Você pode encontrar o versão completa no GitHub para você experimentar.

Normalmente, você pode criar isso por meio da interface do usuário em vez de ter que criar o JSON manualmente. Não vou entrar em muitos detalhes sobre o FTS nesta postagem, pois meu objetivo é demonstrar os novos recursos de autenticação e autorização, e não o FTS em si.

Tentativa de criar um índice sem autorização

Observe que estou usando fts_searcher como usuário. Sei que fts_searcher não deveria ter permissão para criar índices, portanto, eu esperaria um 403. E é exatamente isso que recebo.

Portanto, embora a autenticação tenha funcionado, esse usuário não tem a autorização necessária.

Criação de um índice com autorização

Vou tentar novamente com o fts_admin:

E, supondo que um índice chamado "hotels" ainda não exista, você receberá um 200, e isso no corpo da resposta:

Usando o índice FTS

Em seguida, vamos usar a API REST para pesquisar no índice a palavra "breakfast" (café da manhã).

Primeiro, faça um POST para o /api/index/hotels/query novamente com as credenciais e o número da porta adequados.

ou

Ambos os usuários devem ser capazes de executar uma pesquisa usando esse índice.

Em seguida, no corpo do POST deve haver um objeto JSON simples. Novamente, você normalmente não precisa criar isso manualmente - o SDK de sua preferência ou a interface do usuário do console da Web pode fazer isso para você.

Por fim, o resultado dessa solicitação de pesquisa será uma grande resposta JSON. Dê uma olhada nos "hits" subdocumento para "fragmentos" para verificar se a pesquisa funcionou. Aqui está um trecho da minha pesquisa por "breakfast" (café da manhã). Novamente, o O resultado completo está no Github.

Esta é uma prévia, espere alguns bugs!

Há alguns bugs e alguns recursos incompletos.

  • Mostrei as funções do FTS aqui de propósito. Isso se deve ao fato de que as outras funções ainda não estão totalmente formadas. Experimente-as e diga-nos o que achou, mas lembre-se de que elas não estão em sua forma final. A FTS está mais próxima de estar pronta.
  • Vi alguns problemas quando fazer login como usuário não administrador faz com que o console da Web se comporte mal. Por esse motivo, mostrei o exemplo REST acima em vez de confiar na interface do usuário.
  • Por fim, pode haver outros erros que ainda não conhecemos. Por favor, nos informe! Você pode registrar um problema em nosso Sistema JIRA em issues.couchbase.com ou envie uma pergunta no Fóruns do Couchbase. Ou entre em contato comigo com uma descrição do problema. Terei prazer em ajudá-lo ou enviar o bug para você (meus gerentes do Couchbase me enviam um bolo quando envio um bom bug).

Se tiver dúvidas, a melhor maneira de entrar em contato comigo é Twitter @mgroves ou envie-me um e-mail matthew.groves@couchbase.com.

Autor

Postado por Matthew Groves

Matthew D. Groves é um cara que adora programar. Não importa se é C#, jQuery ou PHP: ele enviará solicitações de pull para qualquer coisa. Ele tem programado profissionalmente desde que escreveu um aplicativo de ponto de venda QuickBASIC para a pizzaria de seus pais nos anos 90. Atualmente, ele trabalha como gerente sênior de marketing de produtos da Couchbase. Seu tempo livre é passado com a família, assistindo aos Reds e participando da comunidade de desenvolvedores. Ele é autor de AOP in .NET, Pro Microservices in .NET, autor da Pluralsight e Microsoft MVP.

5 Comentários

  1. [...] e a autenticação são importantes para o Couchbase. Em março, escrevi no blog sobre alguns dos novos RBACs (Role Based Access Control, Controle de Acesso Baseado em Função) que estamos mostrando nos Developer Builds do Couchbase Server 5.0. Este mês, gostaria de abordar [...]

  2. O [...] Server 5.0 oferece alguns novos recursos excelentes de autenticação que exigem algumas pequenas alterações no código de conexão do cliente. As alterações específicas no SDK [...]

  3. oi, adicionei o PasswordAuthenticator que funciona bem em meu código
    mas o uso do provedor sessionstate em minha configuração da Web funcionava bem na versão 4.5.1, mas agora não é possível fazer o bootstrap
    Estou usando o CouchbaseNetClient -Pre
    qualquer ideia
    Aqui está minha configuração

  4. Oi @doronps,

    Parece que o WordPress comeu sua configuração (provavelmente porque ela é XML). Recomendo que você tente postar nos fóruns do Couchbase .NET SDK aqui: https://www.couchbase.com/forums/c/net-sdk

Deixar uma resposta