.NET

Métodos de autenticación SDK mejorados - Couchbase 5.0

Servidor Couchbase 5.0 ofrece algunas 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 se describen en este post y también se refieren a los cambios realizados en la versión previa. Versión para desarrolladores de abril así como las próximas versiones Beta.

Véase la Introducción de Matthew al control de acceso basado en funciones: Parte 1 & Parte 2

En pocas palabras, las contraseñas basadas en cubos (y los cubos sin contraseña) son cosa del pasado. En su lugar, hemos proporcionado un control de acceso a nivel de rol muy preciso a los cubos, los datos y todos los servicios. Ahora puede crear un usuario con funciones y derechos de acceso específicos y, a continuación, conectarse como ese usuario (con contraseña) en su cliente.

Hay tres patrones específicos para utilizar estas nuevas características, reviso cada opción en este post.

Como esto se basa en código de servidor de preproducción, los ejemplos pueden cambiar. Tenga en cuenta también que necesita tener el últimas bibliotecas del SDK para su idioma, compatibles en el momento de redactar este documento son Java, .NET, Node.js, PHP, Python, Go y C.

Cubos con nombre de usuario

Si continúa utilizando la cadena de conexión URI básica para un bucket sin nombre de usuario, hay algunas suposiciones que el cliente hace ahora.

En primer lugar, asumirá que tienes un usuario con el mismo nombre que su cubo. Los usuarios que migren desde versiones anteriores lo agradecerán, ya que todo lo que tienen que hacer es proporcionar una contraseña con la cadena de conexión como se muestra en este ejemplo de Python:

(Este uso simplificado se limita a las bibliotecas Python, PHP y C)

Lo anterior supone no sólo que existe una cubo llamado tyler sino también un usuario llamado tyler que tenga activada una función de acceso a cubos.

Cubos sin contraseña ya no están permitidos, pero con una excepción: los buckets migrados. Es imposible crear un nuevo usuario sin contraseña, pero el proceso de migración creará usuarios, sin contraseña, para los buckets que antes no la tenían.

Como en el caso anterior, el usuario tendrá el mismo nombre que el cubo y no tendrá contraseña. En ese caso puedes pasar una cadena de contraseña vacía con la cadena de conexión.

Tras la migración, los nuevos buckets y usuarios requerirán contraseñas, por lo que es un buen momento para cambiar su enfoque de cara al futuro.

Pasar nombre de usuario y contraseña con nombre de cubo

El nuevo paradigma de autenticación tiene dos formas de gestionar las conexiones autenticadas. El enfoque más simple es ajustar los parámetros de conexión para incluir tanto el nombre de usuario como la contraseña, esto se hace fácilmente en Python, :

Sin embargo, se trata de un enfoque muy simplista. Hay una opción más potente que utiliza el nueva clase Authenticator para gestionar la autenticación contra, potencialmente, múltiples cubos.

Clase Authenticator para gestionar usuarios y cubos

La forma "correcta" de gestionar la autenticación es desacoplarla completamente del URI del cubo y pasarla a la conexión del clúster cuando sea necesario.

Aquí la inicialización del Authenticator toma un Cluster dado y se autentica contra él. En estos ejemplos se ve que el patrón es el mismo en todos los idiomas. El Authenticator se puede pasar a otros Clusters según se desee.

Python

Java

.NET

PHP

Node.js

 

Próximos pasos

Observa que el principal cambio de diseño en tus aplicaciones es no utilizar una contraseña específica para cada bucket. En su lugar, necesitas tener un usuario con un rol adecuado que tenga acceso a determinados buckets.

Con sólo un par de líneas de cambio de código puedes aprovechar fácilmente las características de control de acceso basado en roles de Couchbase Server 5.0.

Actualizar a la última versión para desarrolladores y actualiza tus bibliotecas de clientes para empezar a probarlo.

Únase a nosotros en los foros ¡con cualquier pregunta!

 

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

Autor

Publicado por Tyler Mitchell - Director de Marketing de Producto

Trabaja como Gerente Senior de Marketing de Producto en Couchbase, ayudando a llevar el conocimiento sobre los productos a la luz pública, mientras que también apoya a nuestros equipos de campo con contenido valioso. Su pasión personal es todo lo geoespacial, habiendo trabajado en GIS durante la mitad de su carrera. Ahora la IA y la búsqueda vectorial son lo primero en lo que piensa.

4 Comentarios

  1. Nombre bweir mayo 8, 2017 a 4:42 pm

    Necesito establecer una conexión SSL. ¿Cómo puedo especificar el certpath en el nuevo SDK? Específicamente estoy usando python. En el pasado hice algo como esto

    db = Bucket("couchbase://localhost/tyler?certpath=/etc/ca-bundle.crt",password="tyler123″)

    1. Tyler Mitchell mayo 8, 2017 a 5:20 pm

      Hola, gracias por leer. De la misma manera como de costumbre, sólo asegúrese de tener la "s" al final de "couchbases://"... Avísame si te quedas atascado de nuevo.

      1. Hola Tyler,

        Debería haber aclarado que mi pregunta se refería específicamente a cómo y dónde especificar el archivo de ruta del certificado. Usamos certificados autofirmados y sin especificar esto obtengo "RC=0x37[El cliente no pudo verificar el certificado del servidor]".

        En el pasado, el certpath se pasaba como un parámetro de tipo url en la cadena de conexión. No estoy seguro de cómo especificar esto en el nuevo sdk.

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.