13
votes

Exception authentifiant MongoCredential et Mongo Db Exception non classée

J'obtiens cette exception de socket d'erreur déclenchée par cette connexion lors de l'exécution de mon application.

INFO 5231 --- [nio-8087-exec-1] org.mongodb.driver.connection: Closed connection [connectionId{localValue:2}] to 192.168.0.2:27017 because there was a socket exception raised by this connection.**

    org.springframework.data.mongodb.UncategorizedMongoDbException: Exception authenticating MongoCredential{mechanism=SCRAM-SHA-1, userName='admin', source='campbell', password=<hidden>, mechanismProperties={}}; nested exception is com.mongodb.MongoSecurityException: Exception authenticating MongoCredential{mechanism=SCRAM-SHA-1, userName='admin', source='campbell', password=<hidden>, mechanismProperties={}}
        at org.springframework.data.mongodb.core.MongoExceptionTranslator.translateExceptionIfPossible(MongoExceptionTranslator.java:138)
        at org.springframework.data.mongodb.core.MongoTemplate.potentiallyConvertRuntimeException(MongoTemplate.java:2756)
        at org.springframework.data.mongodb.core.MongoTemplate.executeFindMultiInternal(MongoTemplate.java:2666)
        at org.springframework.data.mongodb.core.MongoTemplate.doFind(MongoTemplate.java:2409)
        at org.springframework.data.mongodb.core.ExecutableFindOperationSupport$ExecutableFindSupport.doFind(ExecutableFindOperationSupport.java:214)

        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:490)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
        at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:408)
        at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
        at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:791)
        at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1417)
        at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)

    Caused by: com.mongodb.MongoSecurityException: Exception authenticating MongoCredential{mechanism=SCRAM-SHA-1, userName='admin', source='campbell', password=<hidden>, mechanismProperties={}}

    Caused by: com.mongodb.MongoCommandException: Command failed with error 18 (AuthenticationFailed): 'Authentication failed.' on server 192.168.0.2:27017. The full response is { "ok" : 0.0, "errmsg" : "Authentication failed.", "code" : 18, "codeName" : "AuthenticationFailed" }

**I have declared properties in application properties-**
spring.data.mongodb.database=dbname
spring.data.mongodb.username=admin
spring.data.mongodb.password=*******
spring.data.mongodb.port=27017
spring.data.mongodb.host=192.168.0.2

Les informations de connexion sont correctes. J'obtiens toujours cette erreur. Exception authentifiant MongoCredential également Je reçois une exception Mongo Db non classée

Sil te plait aide moi!


3 commentaires

Avez-vous spécifié une authenticationDatabase ? Il est probable que vous vous authentifiez sur une base de données différente pour ce qui est de l'utilisateur. Consultez stackoverflow.com/questions/46934427/...


Après avoir ajouté cette ligne - spring.data.mongodb.authentication-database = admin dans les propriétés de l'application. Maintenant, cela fonctionne correctement. Je vous remercie!


C'est génial! J'ai ajouté une réponse pour aider les futurs utilisateurs SO. Veuillez accepter ceci comme la bonne réponse si vous pensez que cela vous a aidé. Merci.


3 Réponses :


26
votes

Selon # 46934427 , la définition de spring.data.mongodb.authentication-database=admin probablement votre problème.

La base de données par défaut de MongoDB est test , par conséquent, il est probable que vous tentiez de vous authentifier par rapport à la base de données de test . Le passage à la base de données d' admin (l'endroit commun pour les utilisateurs à créer) peut résoudre votre problème.


5 commentaires

Tu as fait ma journée


Cela n'a pas fonctionné pour moi, mais ce qui a fait était d'ajouter l'option ci-dessous à la chaîne de connexion: authSource=<auth_db_name>


Tu as sauvé ma journée. Sucré..!


Dans mon cas, c'était exactement le contraire. Après l'avoir retiré, cela a fonctionné.


@NachoMezzadra cela signifie que votre utilisateur ne fait pas partie de la base de données d'administration, mais d'une autre base de données.



0
votes
Add user admin into your database. 
Open installed folder and open the mongo.exe file and run below command : 
use admin
db.createUser(
{
user: "admin",
pwd: "admin",
roles: [ { role: "userAdminAnyDatabase", db: "admin" },
{ role: "dbAdminAnyDatabase", db: "admin" },
{ role: "readWriteAnyDatabase", db: "admin" } ]
}
)

0 commentaires

0
votes

Vous pouvez essayer ceci:

spring.data.mongodb.uri=mongodb://user:passwod@localhost/test?authSource=admin


0 commentaires