diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/config/MongoCredentialPropertyEditor.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/config/MongoCredentialPropertyEditor.java index 1d8e52767..aaa5a69c8 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/config/MongoCredentialPropertyEditor.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/config/MongoCredentialPropertyEditor.java @@ -100,6 +100,12 @@ public class MongoCredentialPropertyEditor extends PropertyEditorSupport { verifyDatabasePresent(database); credentials.add(MongoCredential.createScramSha1Credential(userNameAndPassword[0], database, userNameAndPassword[1].toCharArray())); + } else if (MongoCredential.SCRAM_SHA_256_MECHANISM.equals(authMechanism)) { + + verifyUsernameAndPasswordPresent(userNameAndPassword); + verifyDatabasePresent(database); + credentials.add(MongoCredential.createScramSha256Credential(userNameAndPassword[0], database, + userNameAndPassword[1].toCharArray())); } else { throw new IllegalArgumentException( String.format("Cannot create MongoCredentials for unknown auth mechanism '%s'!", authMechanism)); diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/config/MongoCredentialPropertyEditorUnitTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/config/MongoCredentialPropertyEditorUnitTests.java index 7e71d7377..516d842a5 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/config/MongoCredentialPropertyEditorUnitTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/config/MongoCredentialPropertyEditorUnitTests.java @@ -73,6 +73,9 @@ public class MongoCredentialPropertyEditorUnitTests { static final String USER_5_AUTH_STRING_WITH_PLAIN_AUTH_MECHANISM = USER_5_AUTH_STRING + "?uri.authMechanism=PLAIN"; static final String USER_5_AUTH_STRING_WITH_QUERY_ARGS = USER_5_AUTH_STRING + "?uri.authMechanism=PLAIN&foo=&bar"; + static final String SCRAM_SHA_256_AUTH_STRING = USER_1_NAME + ":" + USER_1_PWD + "@" + USER_1_DB + + "?uri.authMechanism=SCRAM-SHA-256"; + static final MongoCredential USER_1_CREDENTIALS = MongoCredential.createCredential(USER_1_NAME, USER_1_DB, USER_1_PWD.toCharArray()); static final MongoCredential USER_1_CREDENTIALS_PLAIN_AUTH = MongoCredential.createPlainCredential(USER_1_NAME, @@ -93,6 +96,9 @@ public class MongoCredentialPropertyEditorUnitTests { static final MongoCredential USER_5_CREDENTIALS_PLAIN_AUTH = MongoCredential.createPlainCredential(USER_5_NAME, USER_5_DB, USER_5_PWD.toCharArray()); + static final MongoCredential SCRAM_SHA_256_CREDENTIALS = MongoCredential.createScramSha256Credential(USER_1_NAME, + USER_1_DB, USER_1_PWD.toCharArray()); + MongoCredentialPropertyEditor editor; static { @@ -223,7 +229,7 @@ public class MongoCredentialPropertyEditorUnitTests { editor.setAsText("tyrion?uri.authMechanism=MONGODB-X509"); - assertThat(getValue()). contains(MongoCredential.createMongoX509Credential("tyrion")); + assertThat(getValue()).contains(MongoCredential.createMongoX509Credential("tyrion")); } @Test(expected = IllegalArgumentException.class) // DATAMONGO-1257 @@ -269,6 +275,14 @@ public class MongoCredentialPropertyEditorUnitTests { assertThat(getValue()).contains(USER_5_CREDENTIALS_PLAIN_AUTH); } + @Test // DATAMONGO-2051 + public void shouldReturnScramSha256Credentials() { + + editor.setAsText(SCRAM_SHA_256_AUTH_STRING); + + assertThat(getValue()).contains(SCRAM_SHA_256_CREDENTIALS); + } + @Test(expected = IllegalArgumentException.class) // DATAMONGO-2016 @SuppressWarnings("unchecked") public void failsGracefullyOnEmptyQueryArgument() {