Para iniciar la serie de Couchbase Mobile Sync Gateway, vamos a empezar con la comprensión de cómo autenticar y autorizar a los usuarios en Pasarela de sincronización que es el componente intermediario entre las aplicaciones móviles y el servidor Couchbase.
A través de Sync Gateway, existen varias formas de autenticar la base de usuarios de su aplicación móvil para luego autorizarlos a acceder a la base de datos remota. A partir de ahí, las aplicaciones móviles pueden comunicar datos mediante replicación, donde los datos pueden tener una sincronización bidireccional y multimaestro. Exploremos las diferentes Autenticación Usuarios mecanismos primero.
Autenticación
Autenticación básica HTTP
El cliente móvil puede autenticarse a través de Sync Gateway utilizando una URL de sesión en la que se determina que es /dbname/_session o utilizando una sesión basada en cookies.
1 2 3 |
rizo -H "Content-type: application/json" -X POST http://localhost:4984/dbname/_session --data "{"nombre":"userID","contraseña":"pw"}" |
Con las credenciales de usuario proporcionadas en la solicitud POST de la URL de sesión, la validación devolverá lo siguiente si el usuario y la contraseña son correctos
1 2 3 4 5 |
{ "authentication_handlers":["por defecto","cookie"], "ok":verdadero, "userCtx":{"canales":{"!":1,"canal1":1,"canal2":1},"nombre":"userID"} } |
Autenticación enchufable
Para Couchbase Mobile, el método de autenticación de Facebook es una opción de autenticación pluggable donde Sync Gateway se comunicará con Facebook para autenticar el token para los clientes. Para habilitar esta función, la propiedad de nivel superior 'facebook' se establece en true en el archivo de configuración del servidor para la clave 'register' como a continuación.
1 2 3 4 5 6 7 8 9 10 11 |
{ "facebook" : { "registrar" : verdadero }, "bases de datos": { "comestibles-sync": { "servidor":"http://cbserver:8091", "cubo":"ultramarinos-sincronizar", "usuarios": {"INVITADO": {"desactivado": true}}, "sincronizar":`función(doc) {canal(doc.canales);}` } } } |
A partir de ahí, el cliente móvil puede registrar implícitamente nuevas cuentas de usuario autenticándose a través de Facebook con una petición POST a '/dbname/_facebook' y devolver un JSON que contenga:
- código_de_acceso: Token de acceso devuelto por Facebook
- correo electrónico: Correo electrónico del usuario
- URL_remota: Punto final de la pasarela de sincronización
El nombre de usuario de la cuenta es el mismo que la dirección de correo electrónico autenticada junto con una contraseña aleatoria.
Autenticación personalizada
Hay un par de ventajas de tener una autenticación personalizada para su aplicación móvil en la que no es necesario depender de soluciones de terceros como el anterior método pluggable de Facebook. En general, hay más trabajo involucrado donde usted tiene que mantener el servicio que se comunica con la puerta de enlace de sincronización, junto con las respectivas llamadas de punto final de la aplicación móvil. Esto dependerá de si usted tiene una base de usuarios existente en como un Servidor LDAP para crear una combinación de nombre de usuario y contraseña.
Para implementar un proveedor personalizado donde existe una base de usuarios en una configuración de servidor LDAP es donde la aplicación móvil apunta a la aplicación o servidor de autenticación en primer lugar. A continuación, el servidor de autenticación se encarga de autenticar a los usuarios y, una vez que autentica correctamente a un usuario, el servidor de autenticación realiza una llamada de API a Sync Gateway. API REST de administración en el segundo paso para obtener una sesión válida para ese usuario enviando una petición POST a '/nombre_db/sesión' endpoint. Ese testigo de sesión se reenvía al servidor de autenticación y luego se devuelve al cliente móvil. El tercer y último paso, una vez que la aplicación móvil obtiene el testigo, es comunicarse directamente con Sync Gateway utilizando el testigo de sesión para obtener todos los datos necesarios para el usuario en el dispositivo.
Una vez que hemos autenticado a nuestros usuarios, es hora de explorar los diferentes Autorización de usuarios mecanismos siguientes.
Autorización
Cuentas: admin_channels
Sync Gateway permite autorizar a determinados usuarios el derecho a determinados documentos dentro de una base de datos. A través de la Fichero de configuración JSON, que define las propiedades de Sync Gateway, podemos utilizar la función 'admin_channels' para habilitar una lista de canales a los que el usuario tiene acceso una vez autenticado. Autorizar a un usuario a un canal en particular permitiría el acceso a la LECTURA de documentos:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
{ "log" : ["*"], "bases de datos": { "comestibles-sync": { "servidor":"morsa:", "cubo":"ultramarinos-sincronizar", "usuarios": { "alice": { "desactivado" : falso, "contraseña": "contraseña", "admin_canales":["artículos-alice"] }, "bob": { "desactivado" : falso, "contraseña": "contraseña", "admin_canales":["*"] }, "sincronizar" : ' función(doc, oldDoc) { canal("artículos-"+doc.propietario); } /Agregar documento de artículo al canal de artículos del propietario ' } } } } |
En el ejemplo anterior, el canal * Star es un canal especial que proporciona privilegios de administración a un usuario en particular, Bob, al que se le concede acceso abierto a todos los documentos de una base de datos. Alice, por otro lado, tendrá acceso a su propio canal de ítems que es específico de la etiqueta 'ítems-alice' y por lo tanto en el esquema de autorización, Alice es entonces autorizada. Para que se produzca la autorización, el campo de propietario de un documento de artículo de alimentación debe estar vinculado a la etiqueta canal de artículos personales del propietario en consecuencia.
La función de sincronización permitirá a los usuarios enviar revisiones a los documentos comprobando si están autorizados a acceder al documento. Esto se hace asignando propiedades de cuenta como 'password' en el ejemplo anterior o 'roles' a los usuarios, donde los usuarios autorizados pueden acceder a Sync Gateway y controlar su base de datos remota. Los 'admin_channel' y 'password' son dos de los 'roles' disponibles. Propiedades de la cuenta que puede utilizarse para autorizar el acceso de los usuarios a la base de datos remota a través de Sync Gateway.
En la siguiente serie de blogs sobre Sync Gateway, exploraremos cómo 'Canales' permitir que determinados usuarios puedan leer un documento de la base de datos y saber cómo se enrutan los datos.
Creo que esto necesita un poco más de detalle, el POST a la url pública sólo obtiene una sesión temporal que es mejor eliminar