En la versión para desarrolladores de marzo, puedes empezar a ver algunos cambios importantes en la autenticación y autorización dentro del Control de Acceso Basado en Roles (RBAC) que llega a Couchbase Server. Estos cambios son un trabajo en progreso: la versión para desarrolladores es esencialmente una versión nocturna que se libera al público. Pero hay algunas cosas buenas en RBAC por las que vale la pena entusiasmarse.

Vaya a descargue la versión para desarrolladores 5.0.0 de marzo de Couchbase Server hoy. Asegúrate de hacer clic en la pestaña "Desarrollador" para obtener la versión para desarrolladores (DB) y comprobarla. Aún tienes tiempo de hacernos llegar tus comentarios antes del lanzamiento oficial.

Ten en cuenta que estoy escribiendo esta entrada del blog en las primeras versiones, y algunas cosas pueden cambiar en menor medida en el momento de obtener la versión, y algunas cosas todavía pueden ser buggy.

Autenticación y autorización

Sólo un breve recordatorio de la diferencia entre autenticación y autorización:

  • Autenticación es el proceso de identificar que un usuario es quien dice ser.
  • Autorización es el proceso de asegurarse de que el usuario tiene permiso para hacer lo que está intentando hacer.

Si has usado Couchbase antes, estarás familiarizado con el acceso a lo que a veces llamamos "Admin Web Console".

Couchbase authentication screen

Sin embargo, la Consola Web no es sólo para administradores, sino también para desarrolladores. Pero hasta ahora, no tenías mucho control incorporado en Couchbase sobre quién puede iniciar sesión y (lo que es más importante) qué se les permite hacer.

Así que me gustaría presentarte la nueva función de usuario de primera clase de Couchbase.

Usuarios

Todavía hay un usuario administrador completo. Este es el usuario que creas cuando instalas Couchbase por primera vez. Este es el usuario que no tiene restricciones, y puede hacer cualquier cosa, incluyendo crear nuevos usuarios. Así, por ejemplo, un administrador completo puede ver el enlace "Seguridad" en la navegación, mientras que otros usuarios no pueden.

Security link to manage authentication and authorization

Ahora, una vez en esta página de seguridad, puede añadir, editar y eliminar usuarios.

A usuario puede identificar a una persona, pero también puede identificar algún servicio o proceso. Por ejemplo, si está escribiendo una aplicación ASP.NET, es posible que desee crear un usuario con un conjunto limitado de permisos denominado "servicio web". Por lo tanto, las credenciales para ese "usuario" no serían para una persona, sino para una aplicación ASP.NET.

A continuación, intenta añadir un nuevo usuario Couchbase haciendo clic en "+ Añadir usuario". Voy a crear un usuario llamado "fts_admin", con un nombre de "Full Text Search Admin", una contraseña y un único rol: FTS Admin del bucket travel-sample (FTS = Full Text Search).

Añadir un nuevo usuario

He aquí una animación de la adición de ese usuario:

Add a new user with Couchbase authentication

Algunas notas sobre la animación anterior:

  • He seleccionado "Couchbase" en lugar de "External". Externa está pensada para la integración LDAP. Tenga en cuenta que "Couchbase" (autenticación interna) probablemente se convertirá en el valor predeterminado en futuras versiones.
  • FTS Admin da permiso al usuario para hacer de todo con las Búsquedas de Texto Completo: crearlas, modificarlas, borrarlas y ejecutarlas.
  • He concedido FTS Admin sólo para el cubo de muestras de viajes. Si seleccionara "todos", concedería permiso a todos los cubos, incluso a los creados en el futuro.
  • Los usuarios con el rol de Buscador FTS sólo tienen acceso a ejecutar búsquedas, no a modificarlas o crearlas.

Más adelante hablaremos de la diferencia entre FTS Admin y FTS Searcher.

Iniciar sesión como nuevo usuario

Ahora que este usuario está creado, puedo iniciar sesión como fts_admin. La autenticación de este usuario se maneja dentro de Couchbase.

Login with Couchbase authentication

En primer lugar, en la animación anterior, observe que el usuario fts_admin tiene un conjunto de opciones mucho más limitado en comparación con el usuario admin completo.

A continuación, cabe señalar que los usuarios pueden restablecer su contraseña:

Reset password

Creación de un índice FTS

Dado que ya he creado un usuario fts_admin con la directiva FTS Admin crearé otro usuario llamado fts_searcher que sólo tendrá el rol Buscador FTS papel para el cubo de muestras de viaje.

List of users

Uso de la API REST para FTS

Voy a utilizar la API REST para demostrar que estos usuarios están limitados por los roles que les he dado. Si necesita un repaso de la API REST, puede consultar la página documentación de la API de búsqueda de texto completo. También tenga en cuenta que estoy usando la API REST porque hay algunos errores en la interfaz de usuario como estoy escribiendo esto.

Empecemos por crear un nuevo índice de búsqueda de texto completo (FTS). Lo haré a través de Carteropero puede utilizar rizo o Violinista o la herramienta REST que prefiera.

Crear un índice FTS

Para crear un índice con la API REST, tengo que hacer una solicitud PUT al archivo /api/index/ punto final.

  • En primer lugar, crearé un índice para el tipo 'hotel' en el bucket travel-sample, así que haré un PUT a /api/index/hoteles
  • Además, se pueden poner credenciales en la URL para utilizar la autenticación básica
  • Además, los puntos finales REST están disponibles en el puerto 8094

Por último, la URL para la solicitud PUT debería ser algo parecido a esto:

El cuerpo del PUT es un gran objeto JSON. A continuación se muestra parte de él. Puede encontrar el versión completa en GitHub para que lo pruebes por ti mismo.

Normalmente, usted puede crear esto a través de la interfaz de usuario en lugar de tener que crear JSON a mano. No voy a entrar en FTS en mucho detalle en este post, porque mi objetivo es demostrar las nuevas características de autenticación y autorización, no FTS en sí.

Intento de crear un índice sin autorización

Fíjate que estoy usando fts_searcher como usuario. Sé que fts_searcher no debería tener permiso para crear índices, así que esperaría un 403. Y eso es justo lo que obtengo. Y eso es justo lo que obtengo.

Así que, aunque la autenticación funcionó, ese usuario no tiene la autorización necesaria.

Creación de un índice con autorización

Lo intentaré de nuevo con fts_admin:

Y suponiendo que no exista ya un índice llamado 'hoteles', obtendrás un 200, y esto en el cuerpo de la respuesta:

Utilización del índice FTS

A continuación, utilicemos la API REST para buscar en el índice la palabra "breakfast".

En primer lugar, haga un POST al /api/index/hoteles/consulta endpoint, de nuevo con las credenciales y el número de puerto adecuados.

o

Ambos usuarios deberían poder ejecutar una búsqueda utilizando ese índice.

A continuación, en el cuerpo del POST debe haber un simple objeto JSON. De nuevo, normalmente no tienes que crear esto a mano - tu SDK de elección o la interfaz de usuario de la consola web pueden hacerlo por ti.

Por último, el resultado de esta solicitud de búsqueda será una respuesta JSON de gran tamaño. Mira dentro de los "hits" subdocumento para "fragmentos" para verificar que la búsqueda funcionaba. He aquí un fragmento de mi búsqueda de "breakfast". De nuevo, el el resultado completo está en Github.

Esto es un avance, ¡espera algunos fallos!

Hay algunos errores y algunas funciones incompletas.

  • He mostrado aquí los roles FTS a propósito. Esto se debe a que los otros roles aún no están completamente formados. Por favor, pruébalos y dinos lo que piensas, pero recuerda que no están en su forma final. FTS es el que está más cerca de estar listo.
  • He visto algunos problemas cuando el inicio de sesión como usuario no administrador hace que la consola web se comporte mal. Debido a esto, mostré el ejemplo REST arriba en lugar de confiar en la interfaz de usuario.
  • Por último, es posible que haya otros errores que aún no conozcamos. Háznoslo saber. Puedes presentar un problema en nuestro Sistema JIRA en issues.couchbase.com o envíe una pregunta a Foros de Couchbase. O ponte en contacto conmigo con una descripción del problema. Estaré encantado de ayudarte o de enviar el error por ti (mis gestores de Couchbase me envían un pastel cuando envío un buen error).

Si tiene alguna pregunta, la mejor forma de ponerse en contacto conmigo es Twitter @mgroves o envíeme un correo electrónico matthew.groves@couchbase.com.

Autor

Publicado por Matthew Groves

A Matthew D. Groves le encanta programar. No importa si se trata de C#, jQuery o PHP: enviará pull requests para cualquier cosa. Lleva codificando profesionalmente desde que escribió una aplicación de punto de venta en QuickBASIC para la pizzería de sus padres, allá por los años noventa. Actualmente trabaja como Director de Marketing de Producto para Couchbase. Su tiempo libre lo pasa con su familia, viendo a los Reds y participando en la comunidad de desarrolladores. Es autor de AOP in .NET, Pro Microservices in .NET, autor de Pluralsight y MVP de Microsoft.

5 Comentarios

  1. [...] y la autenticación son importantes para Couchbase. En marzo, escribí en el blog sobre algunos de los nuevos controles de acceso basados en roles (RBAC) que estamos mostrando en las compilaciones para desarrolladores de Couchbase Server 5.0. Este mes, me gustaría ir [...]

  2. [...] Server 5.0 ofrece nuevas funciones de autenticación que requieren algunos cambios menores en el código de conexión del cliente. Los cambios específicos en el SDK [...]

  3. hola he añadido el PasswordAuthenticator que funciona bien en mi código
    pero usando sessionstate provider en mi web config funciona bien en 4.5.1 pero no puede bootstrap ahora
    Estoy usando CouchbaseNetClient -Pre
    cualquier idea
    Aquí está mi configuración

  4. Hola @doronps,

    Parece que WordPress se ha comido tu configuración (probablemente porque es XML). Te recomiendo que intentes escribir en los foros de Couchbase .NET SDK aquí: https://www.couchbase.com/forums/c/net-sdk

Dejar una respuesta