I have a 3 node Mongo cluster that was working with Oak before I enabled
authorization.
I set up a user with every permission possible.
I use this code to build my repository.
MongoClientURI uri = new
MongoClientURI("mongodb://root4:root4pw@mongo1,mongo2,mongo3/test?replicaSet=rs0&authSource=admin");MongoClient
mongoClient = new MongoClient(uri);
DB db = mongoClient.getDB("test");DocumentNodeStore ns =
MongoDocumentNodeStoreBuilder.newMongoDocumentNodeStoreBuilder().setMongoDB(db).build();Oak
oak = new Oak(ns);Jcr jcr = new Jcr(oak);
The repository fails to build with this stack trace
java.util.concurrent.ExecutionException:
com.mongodb.MongoQueryException: Query failed with error code 13 and
error message 'not authorized on admin to execute command { find:
"nodes", filter: { _id: "0:/" }, limit: 1, singleBatch: true }' on
server mongo-bill-3:27017
at java.util.concurrent.FutureTask.report(FutureTask.java:122)
at java.util.concurrent.FutureTask.get(FutureTask.java:192)
at
org.apache.jackrabbit.oak.plugins.document.mongo.replica.ReplicaSetInfo.getRootRevisions(ReplicaSetInfo.java:347)
at
org.apache.jackrabbit.oak.plugins.document.mongo.replica.ReplicaSetInfo.updateRevisions(ReplicaSetInfo.java:270)
at
org.apache.jackrabbit.oak.plugins.document.mongo.replica.ReplicaSetInfo.updateReplicaStatus(ReplicaSetInfo.java:182)
at
org.apache.jackrabbit.oak.plugins.document.mongo.replica.ReplicaSetInfo.updateLoop(ReplicaSetInfo.java:145)
at
org.apache.jackrabbit.oak.plugins.document.mongo.replica.ReplicaSetInfo.run(ReplicaSetInfo.java:134)
at java.lang.Thread.run(Thread.java:748)
I'm not sure if there is some setting I've missed? Is there any way to get
Oak and Mongo to work properly with authorization turned on in MongoDB?
Mongo: 3.4.22
Oak: 1.8.6
--
Benjamin Erridge