0

I am upgrading to Spring 5.2.0.RELEASE, Spring Mongo 2.2.0.RELEASE, and Mongo Java Driver 3.11.1.

After upgrading Spring Security to 5.2.0 also, I am getting the following authentication error.

If I go back to Spring Security 4.2, I don't get this error (but have other issues).

Also, previously I was using Spring 4.2, and didn't have any authentication issues.

Any ideas?

Caused by: com.mongodb.MongoSecurityException: Exception authenticating MongoCredential{mechanism=SCRAM-SHA-1, userName='XXX', source='XXX', password=<hidden>, mechanismProperties=<hidden>}
    at com.mongodb.internal.connection.SaslAuthenticator.wrapException(SaslAuthenticator.java:173)
    at com.mongodb.internal.connection.SaslAuthenticator.access$300(SaslAuthenticator.java:40)
    at com.mongodb.internal.connection.SaslAuthenticator$1.run(SaslAuthenticator.java:70)
    at com.mongodb.internal.connection.SaslAuthenticator$1.run(SaslAuthenticator.java:47)
    at com.mongodb.internal.connection.SaslAuthenticator.doAsSubject(SaslAuthenticator.java:179)
    at com.mongodb.internal.connection.SaslAuthenticator.authenticate(SaslAuthenticator.java:47)
    at com.mongodb.internal.connection.InternalStreamConnectionInitializer.authenticateAll(InternalStreamConnectionInitializer.java:156)
    at com.mongodb.internal.connection.InternalStreamConnectionInitializer.initialize(InternalStreamConnectionInitializer.java:63)
    at com.mongodb.internal.connection.InternalStreamConnection.open(InternalStreamConnection.java:129)
    at com.mongodb.internal.connection.UsageTrackingInternalConnection.open(UsageTrackingInternalConnection.java:50)
    at com.mongodb.internal.connection.DefaultConnectionPool$PooledConnection.open(DefaultConnectionPool.java:398)
    at com.mongodb.internal.connection.DefaultConnectionPool.get(DefaultConnectionPool.java:115)
    at com.mongodb.internal.connection.DefaultConnectionPool.get(DefaultConnectionPool.java:101)
    at com.mongodb.internal.connection.DefaultServer.getConnection(DefaultServer.java:92)
    at com.mongodb.binding.ClusterBinding$ClusterBindingConnectionSource.getConnection(ClusterBinding.java:126)
    at com.mongodb.operation.FindOperation$1.call(FindOperation.java:728)
    at com.mongodb.operation.FindOperation$1.call(FindOperation.java:725)
    at com.mongodb.operation.OperationHelper.withReadConnectionSource(OperationHelper.java:463)
    at com.mongodb.operation.FindOperation.execute(FindOperation.java:725)
    at com.mongodb.operation.FindOperation.execute(FindOperation.java:89)
    at com.mongodb.client.internal.MongoClientDelegate$DelegateOperationExecutor.execute(MongoClientDelegate.java:189)
    at com.mongodb.client.internal.FindIterableImpl.first(FindIterableImpl.java:205)
    at org.springframework.data.mongodb.core.MongoTemplate$FindOneCallback.doInCollection(MongoTemplate.java:2945)
    at org.springframework.data.mongodb.core.MongoTemplate$FindOneCallback.doInCollection(MongoTemplate.java:2916)
    at org.springframework.data.mongodb.core.MongoTemplate.executeFindOneInternal(MongoTemplate.java:2757)
    ... 81 more
Caused by: com.mongodb.MongoCommandException: Command failed with error 18 (AuthenticationFailed): 'Authentication failed.' on server localhost:27017. The full response is {"ok": 0.0, "errmsg": "Authentication failed.", "code": 18, "codeName": "AuthenticationFailed"}
    at com.mongodb.internal.connection.ProtocolHelper.getCommandFailureException(ProtocolHelper.java:175)
    at com.mongodb.internal.connection.InternalStreamConnection.receiveCommandMessageResponse(InternalStreamConnection.java:303)
    at com.mongodb.internal.connection.InternalStreamConnection.sendAndReceive(InternalStreamConnection.java:259)
    at com.mongodb.internal.connection.CommandHelper.sendAndReceive(CommandHelper.java:83)
    at com.mongodb.internal.connection.CommandHelper.executeCommand(CommandHelper.java:33)
    at com.mongodb.internal.connection.SaslAuthenticator.sendSaslContinue(SaslAuthenticator.java:134)
    at com.mongodb.internal.connection.SaslAuthenticator.access$200(SaslAuthenticator.java:40)
    at com.mongodb.internal.connection.SaslAuthenticator$1.run(SaslAuthenticator.java:67)

Here is my appContext-Persistence.xml:

<mongo:mongo-client host="${mongo.host}" port="${mongo.port}" id="mongoClient" replica-set="${mongo.replica.set}"
                    credentials="${mongo.username}:${mongo.password}@${mongo.dbname}">
                <mongo:client-options connections-per-host="${mongo.connections.per.host}"
                    threads-allowed-to-block-for-connection-multiplier="4"
                    connect-timeout="${mongo.connection.timeout}" max-wait-time="${mongo.max.wait.time}"
                    socket-keep-alive="true" socket-timeout="1500" />
</mongo:mongo-client>

<mongo:db-factory dbname="${mongo.dbname}" mongo-ref="mongoClient" id="mongoDbFactory" />

<bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
    <constructor-arg name="mongoDbFactory" ref="mongoDbFactory"/>
</bean>

<bean class="org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor"/>
s7vr
  • 73,656
  • 11
  • 106
  • 127
nuraman00
  • 11
  • 2

0 Answers0