2

Previously I could use db.authenticate(String username, char[] password) method. With 2.13.0, how can I achieve this?

Dev
  • 13,492
  • 19
  • 81
  • 174

3 Answers3

1

There is no replacement for db.authenticate(). The driver will use the credentials provided and make sure the connections are authenticated as they are created.

Based on this mongodb-user discussion the Java Driver team is open to discussions on what the real need for the db.authenticate(...) method.

Rob Moore
  • 3,343
  • 17
  • 18
0

Use

import com.mongodb.MongoCredential;

MongoCredential mongoCred = MongoCredential.createMongoCRCredential(String username, String dbName, char[] password);

and create mongoclient using mongocredentials

com.mongodb.MongoClient.MongoClient(List seeds, List credentialsList, MongoClientOptions options)

Indrajeet
  • 642
  • 1
  • 6
  • 12
  • I know about MongoCredential. I just want to authenticate database against username or password as I mentioned in my question. – Dev Mar 30 '15 at 13:21
0

We can have user-password based authentication for databases, in that case we need to provide authorization credentials like below for new version.

MongoCredential journaldevAuth = MongoCredential.createPlainCredential("pankaj", "journaldev", "pankaj123".toCharArray());
    MongoCredential testAuth = MongoCredential.createPlainCredential("pankaj", "test", "pankaj123".toCharArray());
    List<MongoCredential> auths = new ArrayList<MongoCredential>();
    auths.add(journaldevAuth);
    auths.add(testAuth);

    ServerAddress serverAddress = new ServerAddress("localhost", 27017);
    MongoClient mongo = new MongoClient(serverAddress, auths);

If you are using older versions, you need to provide authentication details after getting the DB object like below

MongoClient mongo = new MongoClient("localhost", 27017);
DB db = mongo.getDB("journaldev");
boolean auth = db.authenticate("pankaj", "pankaj123".toCharArray());
Pramod Kharade
  • 2,005
  • 1
  • 22
  • 41