Couchbase 6.0 + springboot(InvalidPasswordException)

lok*_*ely 3 couchbase spring-boot spring-data-couchbase

嗨,我是Couchbase的新手,并使用Couchbase 6.0创建了一个Springboot应用程序.

当我安装Couchbase时,它要求我创建用户名和密码,然后我设置username ="admin"和password ="password"然后我创建了"student"存储桶.

我在application.properties文件中完成了所有必需的配置.

spring.couchbase.bootstrap-hosts=127.0.0.1
spring.couchbase.bucket.name=student
spring.couchbase.bucket.password=password
Run Code Online (Sandbox Code Playgroud)

在服务器启动时,我收到以下错误

Caused by: com.couchbase.client.java.error.InvalidPasswordException: null
Run Code Online (Sandbox Code Playgroud)

Couchbase Web控制台,我添加了一个安全选项卡,用户名"admin"(我在Couchbase服务器安装期间创建),并给予完全管理员访问权限 在此输入图像描述

在服务器重新启动时,我遇到了同样的问题

然后我在那里添加了一个用户"学生"(与我的桶名相同)并给予完全管理员访问权限

在此输入图像描述

这次我的服务器成功启动,我没有得到任何异常

所以我在这里有两个问题,

1:我是否需要在安全选项卡中的Couchbase服务器中创建与用户名一样多的用户名?

2:假设我只想使用用户名"admin"(我在Couchbase服务器安装期间创建),我将如何实现这一目标?

有人可以对这种行为有所了解吗?

pre*_*oid 8

Pre couchbase 4.5,存储桶有密码,如果你需要访问存储桶,你必须提供存储桶名称和密码.在4.5之后,他们实现了rbac(基于角色的访问控制)并删除了桶级密码.

因此,对于那些升级了他们的沙发基础但又不想更改代码或制作新版本的人,建议进行解决方法,为每个桶创建一个用户名,其中用户名是存储桶名称,密码对所有人都相同用户,这种方式spring-data-couchbase在运行时仍然可以成功验证.

现在rbac被添加到couchbase-java-client&spring-data-couchbase(考虑到你使用的是最新版本,不确定他们添加了哪个特定版本),所以如果你想使用一个用户名连接到你的所有存储桶,你需要一个,extends AbstractCouchbaseConfiguration然后

@Override
protected String getUsername() {
    return "admin";
}
Run Code Online (Sandbox Code Playgroud)

并通过旧bucketPassword()方法提供密码.

我认为你还没有做到这一点,application.properties因为 org.springframework.boot.autoconfigure仍然没有更新依赖关系来适应最新的spring-data-couchbase变化.

另请注意,您通过安全选项卡创建的用户名与您通过安装向导创建的用户无关.您通过初始安装创建的用户是主用户,无法删除,您将无法在安全选项卡下看到它并且具有完全管理员权限.您仍然可以通过安全选项卡定义一个具有相同名称的用户名(我刚学到了这一点),但是您将拥有2个帐户,相同的用户,不同的通行证(或者甚至相同的通行证,但我甚至不确定它是如何处理的couchbase,我的意思是如果我们有两个名为'Administrator'的帐户使用相同的密码然后在Web控制台上进行登录,会考虑哪个用户?也许有人可以告诉我们.)

  • getUserName()不可用,我正在使用Couchbase 6企业版和springboot 2.0.6。并在pom.xml中具有spring-boot-starter-data-couchbase依赖性。 (2认同)
  • 升级到稳定版本2.1.0,您将获得该方法。 (2认同)