spring-boot - Couchbase 6.0 + springboot (InvalidPasswordException)

标签 spring-boot couchbase spring-data-couchbase

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

当我安装 Couchbase 时,它​​要求我创建用户名和密码,我设置了用户名 =“admin”和密码 =“密码”,然后我创建了“学生”存储桶。

我已经在 application.properties 文件中完成了所有必要的配置。

spring.couchbase.bootstrap-hosts=127.0.0.1
spring.couchbase.bucket.name=student
spring.couchbase.bucket.password=password

在服务器启动时,我收到以下错误
Caused by: com.couchbase.client.java.error.InvalidPasswordException: null

Couchbase 网络控制台,有一个 安全 标签,
我在那里添加了用户名“admin”(我在 Couchbase 服务器安装期间创建的)并给出了 全管理员 使用权
enter image description here

服务器再次重启时,我遇到了同样的问题

然后我在那里又添加了一个用户“学生”(与我的存储桶名称相同)并给出了 全管理员 使用权

enter image description here

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

所以我有两个问题,

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

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

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

最佳答案

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

因此,对于升级了 couchbase 但不想更改代码或发布新版本的人,建议采用一种变通方法,为每个存储桶创建一个用户名,其中用户名是存储桶名称,密码对所有人都相同用户,那样spring-data-couchbase运行时仍然可以成功验证。

现在 rbac 被添加到 couchbase-java-client & spring-data-couchbase (考虑到您使用的是最新版本,不确定他们在哪个特定版本中添加了它),因此如果您想使用单个用户名连接到所有存储桶,您将需要一个 class那个extends AbstractCouchbaseConfiguration进而

@Override
protected String getUsername() {
    return "admin";
}

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

我不认为你可以通过 application.properties 做到这一点然而因为org.springframework.boot.autoconfigure依赖项仍未更新以适应最新的 spring-data-couchbase变化。

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

关于spring-boot - Couchbase 6.0 + springboot (InvalidPasswordException),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53177777/

相关文章:

java - 将 Java 对象传递给 Angular 以满足特定需求

spring-boot - 如何防止 Redis 写入匿名用户 session

ios - 查询包含两个键的 couchbase ios View 时使用通配符

java - Spring Data Couchbase自定义存储库方法

java - 如何根据 Spring Data couchbase 中的键获取批量文档/多重获取

spring-data-couchbase - 使用 Spring Data Couchbase 连接不同的 Couchbase 集群

spring-boot - 在 Spring Boot 应用程序中配置嵌入式 Derby

java - Spring 启动: header value encoding

node.js - 更改CouchBase服务器的IP后如何恢复数据库

couchbase - 在 Couchbase 中查询 "Not In"