1

I am Getting below Exception while inserting record in Mongo DB.

org.springframework.dao.DataAccessResourceFailureException: IOException authenticating the connection; nested exception is com.mongodb.MongoException$Network: IOException authenticating the connection
    at org.springframework.data.mongodb.core.MongoExceptionTranslator.translateExceptionIfPossible(MongoExceptionTranslator.java:56)
    at org.springframework.data.mongodb.core.MongoTemplate.potentiallyConvertRuntimeException(MongoTemplate.java:1791)
    at org.springframework.data.mongodb.core.MongoTemplate.execute(MongoTemplate.java:404)
    at org.springframework.data.mongodb.core.MongoTemplate.insertDBObject(MongoTemplate.java:879)
    at org.springframework.data.mongodb.core.MongoTemplate.doInsert(MongoTemplate.java:709)
    at org.springframework.data.mongodb.core.MongoTemplate.insert(MongoTemplate.java:663)
    at com.yatra.product.seo.service.mongo.MongoJob.singleInsert(MongoJob.java:76)
    at com.yatra.product.seo.service.mongo.MongoJob.myRun(MongoJob.java:96)
    at com.yatra.platform.commons.YatraRunable.run(YatraRunable.java:9)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Caused by: com.mongodb.MongoException$Network: IOException authenticating the connection
    at com.mongodb.DBPort$SaslAuthenticator.authenticate(DBPort.java:915)
    at com.mongodb.DBPort.authenticate(DBPort.java:432)
    at com.mongodb.DBPort.checkAuth(DBPort.java:443)
    at com.mongodb.DBTCPConnector.doOperation(DBTCPConnector.java:207)
    at com.mongodb.DBTCPConnector.say(DBTCPConnector.java:181)
    at com.mongodb.DBCollectionImpl.insertWithWriteProtocol(DBCollectionImpl.java:565)
    at com.mongodb.DBCollectionImpl.insert(DBCollectionImpl.java:195)
    at com.mongodb.DBCollectionImpl.insert(DBCollectionImpl.java:167)
    at com.mongodb.DBCollection.insert(DBCollection.java:93)
    at com.mongodb.DBCollection.insert(DBCollection.java:78)
    at com.mongodb.DBCollection.insert(DBCollection.java:120)
    at org.springframework.data.mongodb.core.MongoTemplate$8.doInCollection(MongoTemplate.java:884)
    at org.springframework.data.mongodb.core.MongoTemplate.execute(MongoTemplate.java:402)
    ... 9 more
Caused by: javax.security.sasl.SaslException: Unable to find PBKDF2WithHmacSHA1. [Caused by java.security.NoSuchAlgorithmException: PBKDF2WithHmacSHA1 SecretKeyFactory not available]
    at com.mongodb.DBPort$ScramSha1Authenticator$ScramSha1SaslClient.Hi(DBPort.java:829)
    at com.mongodb.DBPort$ScramSha1Authenticator$ScramSha1SaslClient.computeClientFinalMessage(DBPort.java:747)
    at com.mongodb.DBPort$ScramSha1Authenticator$ScramSha1SaslClient.evaluateChallenge(DBPort.java:681)
    at com.mongodb.DBPort$SaslAuthenticator.authenticate(DBPort.java:904)
    ... 21 more
Caused by: java.security.NoSuchAlgorithmException: PBKDF2WithHmacSHA1 SecretKeyFactory not available
    at javax.crypto.SecretKeyFactory.<init>(SecretKeyFactory.java:122)
    at javax.crypto.SecretKeyFactory.getInstance(SecretKeyFactory.java:160)
    at com.mongodb.DBPort$ScramSha1Authenticator$ScramSha1SaslClient.Hi(DBPort.java:826)
    ... 24 more

Can Any Body help please ?

Thanks

3

2 Answers 2

1

Despite we can't see your code. There are two possible ways to fix this.

Workaround: Add the following dependencies

    <dependency>
        <groupId>org.bouncycastle</groupId>
        <artifactId>bcpkix-jdk15on</artifactId>
        <version>1.52</version>
    </dependency>
    <dependency>
        <groupId>org.bouncycastle</groupId>
        <artifactId>bcprov-jdk15</artifactId>
        <version>1.46</version>
    </dependency>

And add this instruction Security.addProvider(new BouncyCastleProvider()) before authenticating with MongoDB.

Correct way:

Since, PBKDF2WithHmacSHA1 should be included in your java installation folder. In my opinion, i would check if my enviorment variables are correct. And in the case that you use Windows, i would also check regedit HKLM/Software/JavaSoft/Java Runtime Environment/ to make sure that paths are also correct.

Sign up to request clarification or add additional context in comments.

Comments

1

If your java version below 1.6, then use @Charlie 's solution. Else, there must be absent the system property of java.ext.dirs you can execute java like this:

java -Djava.ext.dirs=$JAVA_HOME/jre/lib/ext yourApp

enjoy it.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.