Práticas recomendadas e tutoriais

Autenticação personalizada com o Couchbase Mobile

Autenticação personalizada com o Couchbase Mobile

O Couchbase Mobile estende o Couchbase para a borda, gerenciando e sincronizando com segurança os dados de qualquer nuvem para todos os dispositivos móveis. O Couchbase Mobile apresenta um banco de dados incorporado - Couchbase Lite - com SQL e pesquisa de texto completo para JSON, sincronização ponto a ponto incorporada e segurança de ponta a ponta, da nuvem à borda.

O Couchbase Mobile também apresenta um gateway seguro da Web, o Sync Gateway, que permite o acesso e a sincronização de dados pela Web e oferece suporte a vários métodos de autenticação. Um desses métodos é a autenticação personalizada, em que um App Server lida com a autenticação em um sistema externo.

Esta publicação do blog o guiará pelo fluxo de autenticação personalizada com exemplos de como implementar o código do App Server e o código do aplicativo móvel. Uma OpenLDAP é usado neste exemplo, mas o fluxo se aplica a qualquer provedor de autenticação externo.

O exemplo do App Server é um aplicativo node.js simples e as amostras de código do aplicativo móvel usam o SDK do Couchbase Lite para Android.

Pré-requisitos

Este blog pressupõe familiaridade com o Couchbase Server, o Sync Gateway e o Couchbase Lite.

Você precisará de uma instalação operacional do Sync Gateway 2.5 e do Couchbase Server EE 6.x. Se necessário, os links a seguir podem ajudá-lo a começar a trabalhar rapidamente:

  1. Instalar o servidor Couchbase
  2. Instalar o Sync Gateway
  3. Configurar o Sync Gateway

Todo o código deste blog está disponível no seguinte repositório Git: https://github.com/dugbonsai/sg-custom-auth

Fluxo de autenticação personalizado

O diagrama a seguir mostra um exemplo de autenticação personalizada.

  1. O usuário do aplicativo móvel tenta fazer login com suas credenciais por meio de uma interface REST exposta pelo App Server.
  2. O App Server autentica o usuário em um servidor OpenLDAP.
  3. Se o usuário não estiver autenticado, ele retornará à interface de login.
  4. Se o usuário for autenticado, o App Server obterá as informações do usuário do Sync Gateway por meio de uma interface REST.
  5. Se o usuário já existir no Sync Gateway, vá para a etapa 8.
  6. Se o usuário não existir no Sync Gateway, o App Server criará um novo usuário no Sync Gateway por meio de uma interface REST.
  7. Se o usuário não tiver sido criado no Sync Gateway, o App Server retornará um erro e o usuário retornará à interface de login.
  8. Se o usuário tiver sido criado no Sync Gateway, o App Server criará uma nova sessão para o usuário no Sync Gateway por meio de uma interface REST.
  9. Se a sessão não tiver sido criada no Sync Gateway, o App Server retornará um erro e o usuário retornará à interface de login.
  10. Se a sessão tiver sido criada no Sync Gateway, o App Server retornará a ID da sessão.
  11. O aplicativo móvel armazena o ID da sessão e cria um replicador do Couchbase Lite usando o ID da sessão.
  12. Se a replicação falhar devido a uma sessão expirada no Sync Gateway, o usuário retornará à interface de login.

Configuração do OpenLDAP

Se já tiver um servidor LDAP configurado, pule esta seção. Se você não tiver um servidor LDAP configurado, Estas instruções o orientarão na configuração do OpenLDAP no Ubuntu 18.04.

  1. Criar um arquivo LDIF (ldap_data.ldif) com informações para preencher o banco de dados LDAP (Clique aqui para obter mais detalhes sobre os arquivos LDIF). As instruções para configurar o OpenLDAP acima também contêm instruções para criar o arquivo LDIF para preencher o banco de dados LDAP. Neste exemplo, o usuário mobileuser (a partir da linha 13) será usado na autenticação do aplicativo móvel.

  1. Adicione os dados iniciais ao banco de dados OpenLDAP:

  1. Teste a configuração procurando por mobileuser no diretório OpenLDAP:

Você verá as informações do usuário móvel:

Implementação do servidor de aplicativos

O App Server é implementado como um aplicativo node.js. O código completo do App Server está disponível em auth.js no seguinte repositório Git: sg-custom-auth. O App Server usa o pacote passport-ldapauth para autenticação LDAP. Os trechos de código a seguir destacam a chamada para autenticação no servidor OpenLDAP e as chamadas da API REST do Sync Gateway.

O App Server deve tratar as chamadas para POST /login. Esse endpoint é chamado a partir do aplicativo móvel com as credenciais de usuário armazenadas no corpo da solicitação em nome de usuário e senha. O App Server usa essas credenciais para se autenticar no servidor OpenLDAP.

O valor de searchBase deve corresponder aos componentes de domínio definidos em seu servidor LDAP. dc=example,dc=com foi usado acima, portanto, os mesmos valores são usados aqui (linha 12).

As etapas a seguir serão executadas se o usuário for autenticado.

Obter informações do usuário do Sync Gateway

Obtenha informações do usuário do Sync Gateway chamando GET /{db}/_user/{name}. Se o usuário existir no Sync Gateway, o código de resposta será 200. Se o usuário não existir no Sync Gateway, o código de resposta será 404.

Se o usuário não existir no Sync Gateway, crie um novo usuário

Crie um novo usuário no Sync Gateway chamando POST /{db}/_user/. Se o usuário tiver sido criado com êxito no gateway Sync, o código de resposta será 201.

Criar uma sessão para o usuário no Sync Gateway

Crie uma sessão para o usuário no Sync Gateway chamando POST /{db}/_session. Neste exemplo, a sessão expirará após 30 minutos. Se a sessão tiver sido criada com êxito no Sync Gateway, o código de resposta será 200. A resposta JSON contém os seguintes valores:

session_idID da nova sessão: o ID da nova sessão. Isso será usado pelo aplicativo móvel para autenticação com o Sync Gateway.

expiraçõesData de expiração: registro de data e hora em que a sessão expira. Isso não é usado no aplicativo móvel.

nome_do_cookieNome do cookie de sessão. Não é usado no aplicativo móvel.

Teste de autenticação

Para testar a autenticação do App Server, inicie-o usando o seguinte comando:

Após a inicialização, você verá o seguinte:

Você pode testar o servidor de aplicativos usando um comando curl simples, como segue (ou Postman, etc.):

Você verá uma saída semelhante à seguinte:

Se o usuário não existir no LDAP, a resposta será:

A saída do App Server terá a seguinte aparência:

Implementação de aplicativos móveis

Tudo o que resta é fazer as chamadas apropriadas do aplicativo móvel para o App Server e o Sync Gateway. O aplicativo móvel usa o Estrutura de vôlei para fazer a chamada REST para o App Server. Os trechos de código a seguir destacam a chamada para o App Server e o código do Couchbase Lite para autenticar usando o session_id.

Autenticar o usuário móvel

Autenticar o usuário com o App Server chamando POST /login/

Criar uma replicação única

Crie uma replicação única usando o session_id salvo (linha 13) e autentique novamente se a sessão do Sync Gateway tiver expirado.

O que vem a seguir

Se você é novo no Couchbase, aproveite nosso treinamento on-line gratuito disponível em https://learn.couchbase.com para saber mais.

Mais informações tutoriais para celular pode ser encontrado no site Página da Web dos tutoriais do Couchbase.

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

Author

Posted by Douglas Bonser, Engenheiro de Soluções Principal, Couchbase

Douglas Bonser é engenheiro de soluções principal da Couchbase e trabalha com TI e tecnologia desde 1991. Ele mora na região de Dallas/Ft. Worth.

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.