0

Q - Cannot authenticate via Mongo Java Driver. Things work fine on mongo shell.

MongoDB Server Version -

db version v3.2.6

Java Mongodb Driver Maven Dependency

version 2.6.2

This is what I did -

  1. Start MongoDB - sudo mongod --port 27017 --dbpath /data/db
  2. Open shell - mongo --port 27017
  3. use admin
  4. db.createUser({user:"abc",pwd:"abc",roles:[{role:"root",db:"admin"}]})
  5. Restart with auth required - sudo mongod --auth --port 27017 --dbpath /data/db

Java side

MongoOptions moptions = new MongoOptions();
moptions.autoConnectRetry = Boolean.getBoolean(prop.getProperty("MONGO_OPTIONS_AUTOCONNECT_RETRY"));
moptions.connectionsPerHost = Integer.parseInt(prop.getProperty("MONGO_OPTIONS_CONNECTIONS_PER_HOST"));
moptions.threadsAllowedToBlockForConnectionMultiplier = Integer.parseInt(prop.getProperty("MONGO_OPTIONS_THREADS_BLOCK"));
ServerAddress srvAddr = new ServerAddress(prop.getProperty("MONGODB_HOST"),                     Integer.parseInt(prop.getProperty("MONGODB_PORT")));        
client = new Mongo(srvAddr, moptions);

DB adminDB = client.getDB("admin");
Boolean auth = adminDB.authenticate("abc", "abc".toCharArray());

Result

auth always comes out FALSE.

1 Answer 1

1

The authentication procedure for the MongoDB Java driver 2.x I know works as follows:

    MongoCredential credential = MongoCredential.createCredential(
            user, "admin", password.toCharArray());
    Mongo mongo = new MongoClient(new ServerAddress(mongoHostname), 
            Arrays.asList(credential));

Note for accessing a Mongo 3.2 database using a 2.x driver you need at least MongoDB Java driver Version 2.14 (see MongoDB compatibility info). Your version 2.6.2 is way too old. You need to upgrade it.

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

1 Comment

MongoCredential is only since Mongodb version 2.11

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.