Couchbase 6.0 + springboot (InvalidPasswordException) - PullRequest
0 голосов
/ 06 ноября 2018

Привет, я новичок в Couchbase и создал приложение Springboot с Couchbase 6.0.

Когда я установил Couchbase, он попросил меня создать имя пользователя и пароль, и я установил username = "admin" и password = "password", а затем я создал "студенческое" ведро.

Я выполнил все необходимые настройки в файле 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

При повторном запуске сервера я столкнулся с той же проблемой

затем я добавил туда еще одного пользователя "student" (так же как и мое имя) и дал полный админ доступ

enter image description here

на этот раз мой сервер успешно стартовал, и я не получил никаких исключений

Итак, у меня здесь два вопроса,

1: Нужно ли создавать столько имен пользователей, сколько у меня в корзине? Сервер Couchbase во вкладке безопасности?.

2: Допустим, я хочу использовать только имя пользователя «admin» (которое я создал во время установки сервера Couchbase), как мне этого добиться?.

Может кто-нибудь пролить свет на это поведение?

Ответы [ 2 ]

0 голосов
/ 08 ноября 2018

Я получил альтернативу для этого, переопределив метод couchbaseClusterInfo () в классе конфигурации.

    @Override
    @Bean(name = BeanNames.COUCHBASE_CLUSTER_INFO)
    public ClusterInfo couchbaseClusterInfo() throws Exception {
        return couchbaseCluster().authenticate("admin","password").clusterManager().info();
    }

это работает нормально.

0 голосов
/ 07 ноября 2018

До couchbase 4.5, в корзинах были пароли, где, если вам нужен доступ к корзине, вам нужно будет указать имя корзины и ее пароль. После 4.5 они внедрили rbac (управление доступом на основе ролей) и удалили пароли на уровне сегмента.

Таким образом, для людей, которые обновили свою базу, но не хотят менять свой код или сделать новую версию, был предложен обходной путь: создайте имя пользователя для каждой корзины, где имя пользователя - это имя корзины, а пароль - То же самое для всех пользователей, поэтому spring-data-couchbase по-прежнему успешно проходит проверку подлинности при запуске.

Теперь rbac добавлен к couchbase-java-client & spring-data-couchbase (учитывая, что вы используете последнюю версию, не уверен, в какой конкретной версии они ее добавили), поэтому, если вы хотите использовать одно имя пользователя для подключения ко всем вашим корзинам вам понадобится класс , который extends AbstractCouchbaseConfiguration, а затем

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

И введите пароль по старому bucketPassword() методу.

Я не думаю, что вы можете сделать это через application.properties, поскольку зависимость org.springframework.boot.autoconfigure все еще не обновлена, чтобы учесть последние изменения spring-data-couchbase.

Также обратите внимание, что имя пользователя, которое вы создали на вкладке безопасности, не имеет ничего общего с пользователем, которого вы создали с помощью мастера установки. Пользователь, которого вы создали при первоначальной установке, является главным, его нельзя удалить, вы не увидите его на вкладке «Безопасность» и у него есть полные права администратора. Вы все еще можете определить имя пользователя с тем же именем через вкладку безопасности (я только что узнал об этом), но тогда у вас будет 2 учетных записи, один и тот же пользователь, другой проход (или, может быть, тот же проход, но я даже не уверен, как он обрабатывается couchbase, я имею в виду, если у нас есть 2 учетные записи с именем «Администратор» с одним и тем же паролем, а затем в веб-консоли происходит вход в систему, какой пользователь считается? Может, кто-то может сказать нам.)

...