From 3386856ccf667aee1a1ece2f4d9a60131e69ac63 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Enes=20A=C3=A7=C4=B1ko=C4=9Flu?= Date: Fri, 29 Mar 2019 18:07:15 +0300 Subject: [PATCH] Add support for Couchbase's role-based access See gh-16389 --- .../couchbase/CouchbaseConfiguration.java | 17 +++++++++--- .../couchbase/CouchbaseProperties.java | 27 ++++++++++++++++++- 2 files changed, 40 insertions(+), 4 deletions(-) diff --git a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/couchbase/CouchbaseConfiguration.java b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/couchbase/CouchbaseConfiguration.java index 2cad70668e..4dc458be67 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/couchbase/CouchbaseConfiguration.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/couchbase/CouchbaseConfiguration.java @@ -57,7 +57,14 @@ public class CouchbaseConfiguration { @Bean @Primary public Cluster couchbaseCluster() { - return CouchbaseCluster.create(couchbaseEnvironment(), determineBootstrapHosts()); + CouchbaseCluster couchbaseCluster = CouchbaseCluster + .create(couchbaseEnvironment(), determineBootstrapHosts()); + if (this.properties.getUsername().isEmpty() + || this.properties.getPassword().isEmpty()) { + return couchbaseCluster; + } + return couchbaseCluster.authenticate(this.properties.getUsername(), + this.properties.getPassword()); } /** @@ -79,8 +86,12 @@ public class CouchbaseConfiguration { @Bean @Primary public Bucket couchbaseClient() { - return couchbaseCluster().openBucket(this.properties.getBucket().getName(), - this.properties.getBucket().getPassword()); + if (this.properties.getUsername().isEmpty() + || this.properties.getPassword().isEmpty()) { + return couchbaseCluster().openBucket(this.properties.getBucket().getName(), + this.properties.getBucket().getPassword()); + } + return couchbaseCluster().openBucket(this.properties.getBucket().getName()); } /** diff --git a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/couchbase/CouchbaseProperties.java b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/couchbase/CouchbaseProperties.java index 2fbfa8e8c2..5919df7880 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/couchbase/CouchbaseProperties.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/couchbase/CouchbaseProperties.java @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.boot.autoconfigure.couchbase; import java.time.Duration; @@ -42,6 +41,16 @@ public class CouchbaseProperties { private final Env env = new Env(); + /** + * Password of the cluster on RBA(role base access). + */ + private String password = ""; + + /** + * Username of the cluster on RBA(role base access). + */ + private String username = ""; + public List getBootstrapHosts() { return this.bootstrapHosts; } @@ -58,6 +67,22 @@ public class CouchbaseProperties { return this.env; } + public String getPassword() { + return this.password; + } + + public void setPassword(String password) { + this.password = password; + } + + public String getUsername() { + return this.username; + } + + public void setUsername(String username) { + this.username = username; + } + public static class Bucket { /**