Ajuda para autenticar no mongodb

boa noite a todos,

antes de tudo agradeço qualquer ajuda que eu tiver.

meu problema é o seguinte, comecei a usar o mongoDB recentemente, estava trabalhando com ele sem autenticação, mas agora preciso autenticar nele via java, e não está funcionando.

O mongo está em uma VM, eu tinha instalado ele, mas quando tento inicia-lo, estando no windows 7, pede uma DLL que tem no service pack 1 do windows 7, achei melhor montar uma VM com windows 10 , instalar o mongo na vm, configurar a rede entre maquinas física e virtual, e sem autenticação isso está funcionando normalmente.

estou pedindo a autenticação na linha de comando, que está da seguinte forma:

mongod --port 27017 --dbpath C:\DSV\mongoDB\teste\data\ --logpath C:\DSV\mongoDB\teste\log\teste.log --auth

abaixo a dependência no maven:

	<dependency>
	  <groupId>org.mongodb</groupId>
	  <artifactId>mongo-java-driver</artifactId>
	  <version>3.2.1</version>
	</dependency>

Abaixo meu código java

package nome.pacote.empresa.teste.cargabase.dao;

import java.net.UnknownHostException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Set;

import com.mongodb.BasicDBObject;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.DBCursor;
import com.mongodb.DBObject;
import com.mongodb.MongoClient;
import com.mongodb.MongoCredential;
import com.mongodb.ServerAddress;
import com.porto.security.cryptography.CryptographyException;

public class MainUtilitarioMongoLocal3 {
	
	public static void main(String[] args) throws CryptographyException, UnknownHostException {

		String nomeBanco = "admin";
		String nomeCollection = "CPF";
		List<MongoCredential> credentials = new ArrayList<MongoCredential>();
		credentials.add(
		    MongoCredential.createMongoCRCredential(
    				"flavio", nomeBanco, "flavio".toCharArray())
		);
		
		List<ServerAddress> seeds = new ArrayList<ServerAddress>();
		seeds.add(new ServerAddress("192.168.56.103", 27017));

//		MongoClient  mongo = new MongoClient (seeds);
		MongoClient  mongo = new MongoClient (seeds, credentials);
		DB db = mongo.getDB(nomeBanco);
		
		DBCollection colecao = db.getCollection(nomeCollection);

		BasicDBObject query = new BasicDBObject();
		query.put("cpf", "12345678901");
		
		try {
			BasicDBObject testeUpdate = new BasicDBObject();
			testeUpdate.put("cpf", "12345678901");
			
			boolean upsert = true;
			boolean multi = false;
//			colecao.update(testeUpdate, testeUpdate, upsert, multi);
			colecao.insert(testeUpdate);
			System.out.println("update ok");
		} catch (Exception e) {
			e.printStackTrace();
		}
		
		mongo.close();
	}
	
}

exceção que ta ocorrendo:

com.mongodb.MongoTimeoutException: Timed out after 30000 ms while waiting for a server that matches WritableServerSelector. Client view of cluster state is {type=UNKNOWN, servers=[{address=192.168.56.103:27017, type=UNKNOWN, state=CONNECTING, exception={com.mongodb.MongoSecurityException: Exception authenticating}, caused by {com.mongodb.MongoCommandException: Command failed with error 18: 'auth failed' on server 192.168.56.103:27017. The full response is { "ok" : 0.0, "errmsg" : "auth failed", "code" : 18, "codeName" : "AuthenticationFailed" }}}]
	at com.mongodb.connection.BaseCluster.createTimeoutException(BaseCluster.java:369)
	at com.mongodb.connection.BaseCluster.selectServer(BaseCluster.java:101)
	at com.mongodb.binding.ClusterBinding$ClusterBindingConnectionSource.<init>(ClusterBinding.java:75)
	at com.mongodb.binding.ClusterBinding$ClusterBindingConnectionSource.<init>(ClusterBinding.java:71)
	at com.mongodb.binding.ClusterBinding.getWriteConnectionSource(ClusterBinding.java:68)
	at com.mongodb.operation.OperationHelper.withConnection(OperationHelper.java:219)
	at com.mongodb.operation.BaseWriteOperation.execute(BaseWriteOperation.java:133)
	at com.mongodb.operation.BaseWriteOperation.execute(BaseWriteOperation.java:60)
	at com.mongodb.Mongo.execute(Mongo.java:781)
	at com.mongodb.Mongo$2.execute(Mongo.java:764)
	at com.mongodb.DBCollection.executeWriteOperation(DBCollection.java:333)
	at com.mongodb.DBCollection.insert(DBCollection.java:328)
	at com.mongodb.DBCollection.insert(DBCollection.java:319)
	at com.mongodb.DBCollection.insert(DBCollection.java:289)
	at com.mongodb.DBCollection.insert(DBCollection.java:255)
	at com.mongodb.DBCollection.insert(DBCollection.java:192)
	at com.porto.portoseg.powercurve.cargabase.dao.MainUtilitarioMongoLocal3.main(MainUtilitarioMongoLocal3.java:51)

O estranho, é que teoricamente, essa exceção poderia ser problema de rede, mas se eu deixo de passar a variável credentials no construtor do objeto mongo, ai conectaria, mas daria erro de permissão, quando não requer autenticação do lado servidor, também funciona, mas apenas se você tirar a autenticação do código também, removendo.

Estando na VM, autenticando esses mesmos usuário e senha ( mongo --port 27017 -u “flavio” -p “flavio” --authenticationDatabase “admin” ), eu entro na mesma database e chamo a inclusão e funciona sem problemas.

alguma dica para fazer funcionar a partir de código java???