Сбой аутентификации набора реплик Mongodb при загрузке spring

#java #mongodb #spring-boot #spring-data-mongodb #replicaset

#java #mongodb #весенняя загрузка #spring-data-mongodb #набор реплик

Вопрос:

У меня есть 3 экземпляра набора копий mongodb, включая 1 арбитра в 3 разных экземплярах ec2. Из консоли mongo я могу подключиться к набору реплик. Но когда я пытаюсь создать / развернуть мое приложение с докеризованной загрузкой spring в основном экземпляре ec2, оно выдает исключение ниже

 Caused by: org.springframework.data.mongodb.UncategorizedMongoDbException: Exception authenticating MongoCredential{mechanism=SCRAM-SHA-1, userName='<usrName>', source='<source>', password=<hidden>, mechanismProperties=<hidden>}; nested exception is com.mongodb.MongoSecurityException: Exception authenticating MongoCredential{mechanism=SCRAM-SHA-1, userName='<usrName>', source='<source>', password=<hidden>, mechanismProperties=<hidden>}
Caused by: com.mongodb.MongoSecurityException: Exception authenticating MongoCredential{mechanism=SCRAM-SHA-1, userName='<usrName>', source='<source>', password=<hidden>, mechanismProperties=<hidden>}
Caused by: com.mongodb.MongoCommandException: Command failed with error 18 (AuthenticationFailed): 'Authentication failed.' on server <Primary-Host>:27017. The full response is {"operationTime": {"$timestamp": {"t": 1601217500, "i": 1}}, "ok": 0.0, "errmsg": "Authentication failed.", "code": 18, "codeName": "AuthenticationFailed", "$clusterTime": {"clusterTime": {"$timestamp": {"t": 1601217500, "i": 1}}, "signature": {"hash": {"$binary": {"base64": "KSwBAZHnhcqmjdsAy9HHVB8 yZQ=", "subType": "00"}}, "keyId": 6876114453302083588}}}
  

Свойства mongodb Spring data, используемые при подключении к набору реплик

 spring.data.mongodb.uri=mongodb://<usrName>:<password>@<host-primary>:27017,<host-secondary>:27017/<dbName>?<replicaset name>
spring.data.mongodb.auto-index-creation = true
  

Где, как и при попытке сборки / развертывания с использованием приведенных ниже свойств, т.Е. Подключения к одному узлу, это становится успешным

 spring.data.mongodb.host=<Primary-Host>
spring.data.mongodb.port=27017
spring.data.mongodb.database=<database name>
spring.data.mongodb.authentication-database=admin
spring.data.mongodb.username=<user name>
spring.data.mongodb.password=<password>
spring.data.mongodb.auto-index-creation = true
  

Ответ №1:

Содержит username или password содержит знак @, двоеточие :, косую черту / или символ % со знаком процента?

Если да, проверьте, используете ли вы правильную кодировку.

Также попробуйте добавить authSource в uri следующим образом :

?authSource=adminamp;replicaSet=myRepl

Комментарии:

1. Пароль и имя пользователя в порядке. Попробует с помощью authSource

2. authSource=admin сделал свое дело. Большое спасибо @WASIM AKRAM KHAN