La autenticación y la autorización están enormemente mejoradas en Couchbase Server 5.0. Llevamos un tiempo escribiendo en el blog sobre las nuevas funciones de RBAC en la vista previa para desarrolladores.
- Autenticación y autorización con RBAC – introducción / parte 1
- Autenticación y autorización con RBAC (Parte 2) – gestión de usuarios
- Métodos de autenticación de SDK mejorados – Couchbase 5.0 – una introducción con Python, Java, PHP y .NET
Ahora que se ha lanzado la versión Beta de Couchbase Server 5.0, estoy escribiendo una publicación de blog más detallada sobre cómo usar el SDK de .NET de Couchbase junto con estas nuevas características.
Los fragmentos de código completos utilizados en esta publicación de blog son disponible para ti en Github.
Crear un bucket
Como mencioné en las publicaciones anteriores, los días de los *buckets* con contraseñas han quedado atrás. El futuro pertenece a los usuarios: usuarios que tienen permisos específicos para *buckets* específicos.
Empecemos creando un bucket. En la interfaz de usuario de Couchbase, inicie sesión como el Administrador que creó cuando instaló Couchbase. Vaya a “Buckets” y haga clic en “ADD BUCKET” (arriba a la derecha). Verá el cuadro de diálogo “Add Data Bucket”. Tenga en cuenta que ya no hay un campo de “contraseña” (ni siquiera en “Advanced bucket settings”).

Dale un nombre al depósito y una cantidad de memoria, y haz clic en “Agregar depósito”. Ahora tienes un depósito. Pero, aparte de un Administrador en la interfaz de usuario, nadie puede acceder a este depósito todavía.
Crear un usuario
Para obtener acceso a este bucket, debe crear un usuario. En Couchbase 5.0, los “usuarios” son una función completamente nueva que aporta características más enriquecidas de autenticación y autorización a Couchbase Server.
Mientras sigues conectado como administrador, ve a “Seguridad” para ver una lista de usuarios. Haz clic en “AGREGAR USUARIO” (arriba a la derecha).

Crea un usuario con el nombre y la contraseña que prefieras. Puedes elegir qué roles tiene el usuario y para qué buckets (cuando corresponda). Asignemos a este usuario los roles de Escritor de datos y Lector de datos para el bucket que se acaba de crear (por ejemplo, “mybucket”), pero NINGÚN rol de consulta.

Una vez que se agrega al usuario, puede pasar el cursor sobre los roles para obtener una descripción de lo que significa el rol.

Autenticación y autorización con el SDK de .NET para Couchbase
Ahora que tenemos un depósito y un usuario, veamos cómo usarlos con el SDK de .NET.
Comience por crear un Clúster objeto.
|
1 2 3 4 |
var clúster = nuevo Clúster(nuevo ConfiguraciónDelCliente { Servidores = nuevo Lista<UriEl resultado de tu pregunta se muestra a continuación: { nuevo Uri(“https://localhost:8091”) } }); |
Tienes un clúster, pero tu programa aún no ha sido autenticado. Usa un AutenticadorDeContraseñas objeto para especificar las credenciales. Luego, use ese objeto con el Autenticar método. En el ejemplo siguiente, estoy usando credenciales incorrectas.
|
1 2 |
var autenticador = nuevo AutenticadorDeContraseñas(“myuser”, “contraseñaincorrecta”); clúster.Autenticar(autenticador); |
Ahora, si intento realizar una operación como OpenBucket en el clúster, se arroja una excepción.
|
1 2 3 4 5 6 7 8 9 |
Intentar { var cubeta = clúster.OpenBucket(“mybucket”); } atrapar (Excepción ex) { Consola.EscribirLínea(“Error al obtener el bucket.”); Consola.EscribirLínea(ex.Mensaje); } |

Ahora, intentémoslo de nuevo usando las credenciales correctas. La autenticación funcionará. Pero hablemos de la autorización a continuación.
Recuerda que solo le di a este usuario los roles de Escritor de datos y Lector de datos (para mi bucket). Entonces, si me autentico e inserto un documento ahora, funciona.
|
1 2 3 4 5 6 7 8 9 10 11 |
var clúster = nuevo Clúster(nuevo ConfiguraciónDelCliente { Servidores = nuevo Lista<UriEl resultado de tu pregunta se muestra a continuación: { nuevo Uri(“https://localhost:8091”) } }); var autenticador = nuevo AutenticadorDeContraseñas(“myuser”, “contraseña”); clúster.Autenticar(autenticador); var cubeta = clúster.OpenBucket(“mybucket”); // insertar un documento, esto debería estar permitido var resultado = cubeta.Insertar(Guion.NewGuid().A cadena(), nuevo {foo = “bar”}); Consola.EscribirLínea(“La inserción se realizó correctamente:“ + resultado.Éxito); |

Pero si intentara, por ejemplo, ejecutar un consulta N1QL (SQL para JSON), entonces fallaría. Esto se debe a que ese usuario no tiene autorización para ejecutar consultas.
|
1 2 3 |
var queryResult = cubeta.Consulta<intEl resultado de tu pregunta se muestra a continuación:(“SELECT COUNT(1) FROM `” + cubeta.Nombre + “`”); Consola.EscribirLínea(“Consulta exitosa:“ + queryResult.Éxito); queryResult.Errores.Para cada(e =El resultado de tu pregunta se muestra a continuación: Consola.EscribirLínea(“Error:“ + e.Mensaje)); |
Solo estoy haciendo algo sencillo CONTAR(1) consulta de agregación. Como ese usuario no está autorizado, esto es lo que se muestra:

Una cosa más
Si te preocupa el efecto que esto tendrá al actualizar de Couchbase Server 4.x a Couchbase Server 5.0, aquí tienes un consejo. Si creas un usuario con el mismo nombre que el bucket (por ejemplo, un bucket llamado “foo” y un usuario llamado “foo”), las API de .NET de Couchbase más antiguas que aún esperan una contraseña de bucket funcionarán como antes. Simplemente asigna a ese usuario el rol de “Administrador del clúster” por ahora. Esta es una buena solución temporal hasta que puedas reestructurar tu sistema para utilizar un enfoque metódico de roles.
Resumen
¡Ya está disponible la versión beta de Couchbase Server 5.0! Estas funciones de autenticación basada en roles (RBAC) convierten a Couchbase en un líder en seguridad de bases de datos de documentos, y personalmente me complace mucho que Couchbase esté avanzando en esta dirección. La seguridad es importante, pero con demasiada frecuencia los desarrolladores la pasan por alto.
Si tiene alguna pregunta, por favor pregunta lo que quieras en los foros de Couchbase, deja un comentario abajo, o escríbeme en Twitter @mgroves.

Deja un comentario
Lo siento, debes estar conectado para publicar un comentario.