Buenas prácticas y tutoriales

Autenticación personalizada con Couchbase Mobile

Autenticación personalizada con Couchbase Mobile

Couchbase Mobile extiende Couchbase a la periferia, gestionando y sincronizando datos de forma segura desde cualquier nube a cualquier dispositivo móvil. Couchbase Mobile cuenta con una base de datos integrada -Couchbase Lite- con SQL y búsqueda de texto completo para JSON, sincronización peer-to-peer integrada y seguridad end-to-end desde la nube hasta el extremo.

Couchbase Mobile también cuenta con una pasarela web segura -Sync Gateway- que permite el acceso y la sincronización de datos a través de la web y admite múltiples métodos de autenticación. Uno de estos métodos es la autenticación personalizada en la que un App Server gestiona la autenticación con un sistema externo.

Esta entrada del blog le guiará a través del flujo de autenticación personalizada con ejemplos de cómo implementar el código del servidor de aplicaciones y el código de la aplicación móvil. Un OpenLDAP pero el flujo se aplica a cualquier proveedor de autenticación externo.

El servidor de aplicaciones de ejemplo es una aplicación node.js sencilla y los ejemplos de código de la aplicación móvil utilizan el módulo SDK para Android de Couchbase Lite.

Requisitos previos

Este blog asume familiaridad con Couchbase Server, Sync Gateway, y Couchbase Lite.

Necesitarás una instalación operativa de Sync Gateway 2.5 y Couchbase Server EE 6.x. Si es necesario, los siguientes enlaces pueden ponerte en marcha rápidamente:

  1. Instalar Couchbase Server
  2. Instalar Sync Gateway
  3. Configurar Sync Gateway

Todo el código de este blog está disponible en el siguiente repositorio Git: https://github.com/dugbonsai/sg-custom-auth

Flujo de autenticación personalizado

El siguiente diagrama muestra un ejemplo de autenticación personalizada.

  1. El usuario de la aplicación móvil intenta iniciar sesión con sus credenciales a través de una interfaz REST expuesta por el App Server.
  2. El App Server autentica al usuario contra un servidor OpenLDAP.
  3. Si el usuario no está autenticado, se le devuelve a la interfaz de inicio de sesión.
  4. Si el usuario está autenticado, App Server obtiene la información del usuario de Sync Gateway a través de una interfaz REST.
  5. Si el usuario existe en Sync Gateway, vaya al paso 8.
  6. Si el usuario no existe en Sync Gateway, el App Server crea un nuevo usuario en Sync Gateway a través de una interfaz REST.
  7. Si el usuario no se creó en Sync Gateway, App Server devuelve un error y el usuario regresa a la interfaz de usuario de inicio de sesión.
  8. Si el usuario se creó en Sync Gateway, App Server crea una nueva sesión para el usuario en Sync Gateway a través de una interfaz REST.
  9. Si la sesión no se creó en Sync Gateway, App Server devuelve un error y el usuario regresa a la interfaz de usuario de inicio de sesión.
  10. Si la sesión se creó en Sync Gateway, App Server devuelve el ID de sesión.
  11. La aplicación móvil almacena el ID de sesión y crea un replicador de Couchbase Lite utilizando el ID de sesión.
  12. Si la replicación falla debido a una sesión caducada en Sync Gateway, el usuario vuelve a la interfaz de inicio de sesión.

Configuración de OpenLDAP

Si ya tiene configurado un servidor LDAP puede saltarse esta sección. Si no tiene un servidor LDAP configurado, estas instrucciones le guiarán a través de la configuración de OpenLDAP en Ubuntu 18.04.

  1. Crear un fichero LDIF (ldap_data.ldif) con información para rellenar la base de datos LDAP (pulse aquí para obtener más información sobre los archivos LDIF). Las instrucciones anteriores para configurar OpenLDAP también contienen instrucciones para crear el archivo LDIF para rellenar la base de datos LDAP. En este ejemplo, el usuario mobileuser (a partir de la línea 13) se utilizará cuando se autentique desde la aplicación móvil.

  1. Añade los datos iniciales a la base de datos OpenLDAP:

  1. Pruebe la configuración buscando mobileuser en el directorio OpenLDAP:

Verás la información para mobileuser:

Implementación de App Server

El App Server se implementa como una aplicación node.js. El código completo del App Server está disponible en auth.js en el siguiente repositorio Git: sg-custom-auth. El App Server utiliza el paquete passport-ldapauth para la autenticación LDAP. Los siguientes fragmentos de código destacan la llamada para autenticar contra el servidor OpenLDAP y las llamadas a la API REST de Sync Gateway.

El App Server debe gestionar las llamadas a POST /login. Este endpoint se llama desde la aplicación móvil con las credenciales de usuario almacenadas en el cuerpo de la solicitud en nombre de usuario y contraseña. El App Server utiliza estas credenciales para autenticarse en el servidor OpenLDAP.

El valor de searchBase debe coincidir con los componentes de dominio definidos en su servidor LDAP. dc=example,dc=com se utilizó anteriormente, por lo que aquí se utilizan los mismos valores (línea 12).

Los siguientes pasos se ejecutarán si el usuario está autenticado.

Obtener información de usuario de Sync Gateway

Obtener información de usuario de Sync Gateway llamando a GET /{db}/_usuario/{nombre}. Si el usuario existe en Sync Gateway, el código de respuesta es 200. Si el usuario no existe en Sync Gateway, el código de respuesta es 404.

Si el usuario no existe en Sync Gateway, cree un nuevo usuario

Cree un nuevo usuario en Sync Gateway llamando a POST /{db}/_user/. Si el usuario se ha creado correctamente en la puerta de enlace Sync, el código de respuesta es 201.

Crear una sesión para el usuario en Sync Gateway

Cree una sesión para el usuario en Sync Gateway llamando a POST /{db}/sesión. En este ejemplo, la sesión expirará transcurridos 30 minutos. Si la sesión se ha creado correctamente en Sync Gateway, el código de respuesta es 200. La respuesta JSON contiene los siguientes valores:

session_idel ID de la nueva sesión. La aplicación móvil lo utilizará para la autenticación con Sync Gateway.

caduca en: marca de tiempo cuando expira la sesión. No se utiliza en la aplicación móvil.

nombre_de_la_galleta: nombre de la cookie de sesión. No se utiliza en la aplicación móvil.

Pruebas de autenticación

Para probar la autenticación desde el App Server, inícielo utilizando el siguiente comando:

Cuando se inicie, verás lo siguiente:

Puede probar el servidor de aplicaciones utilizando un simple comando curl como el siguiente (o Postman, etc.):

Verá un resultado similar al siguiente:

Si el usuario no existe en LDAP, la respuesta será:

La salida del App Server tendrá este aspecto:

Implantación de aplicaciones móviles

Todo lo que queda por hacer es realizar las llamadas apropiadas desde la aplicación móvil al servidor de aplicaciones y a la pasarela de sincronización. La aplicación móvil utiliza el Marco de volea para realizar la llamada REST al App Server. Los siguientes fragmentos de código destacan la llamada al App Server y el código de Couchbase Lite para autenticar usando el session_id.

Autenticar al usuario móvil

Autenticar usuario con App Server llamando POST /login/

Crear una réplica única

Cree una replicación única utilizando el identificador de sesión guardado (línea 13) y vuelva a autenticarse si la sesión de Sync Gateway ha caducado.

El futuro

Si no conoce Couchbase, aproveche nuestra formación gratuita en línea disponible en https://learn.couchbase.com para saber más.

Más tutoriales para móviles en la página Página web de tutoriales de Couchbase.

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

Autor

Publicado por Douglas Bonser, Ingeniero principal de soluciones, Couchbase

Douglas Bonser es Ingeniero Principal de Soluciones en Couchbase y lleva trabajando en TI y tecnología desde 1991. Reside en el área de Dallas/Ft. Worth.

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.