WhyVishalWhy Ответов: 1

Как получить доступ к mongodb с помощью механизма аутентификации GSSAPI?


Я пытаюсь подключиться к серверу MongoDB через ssl-сертификат с помощью c#. Я получаю систему.TimeoutException (тайм-аут произошел после 30000ms выбора сервера с помощью CompositeServerSelector).

Что я уже пробовал:

I started with connection via MongoClientSetting object. Here is the code:


MongoClientSettings settings = new MongoClientSettings();
settings.MaxConnectionLifeTime = new TimeSpan(12, 0, 0);

settings.UseSsl = true;
settings.VerifySslCertificate = false;
var cert = new X509Certificate2("mongoDBCAFile.cer");
settings.SslSettings = new SslSettings{
    ClientCertificates = new[] { cert }
};

settings.Servers = new[]{
    new MongoServerAddress("xyz1.intranet.companyname.com", 12345),
    new MongoServerAddress("xyz2.intranet.companyname.com", 12345)
};

settings.ReplicaSetName = "replicaName";

var cred = MongoCredential.CreateGssapiCredential("username@intranet.companyname.com").WithMechanismProperty("SERVICE_NAME", "servicename");
settings.Credential = cred;

var client = new MongoClient(settings);

var database = client.GetDatabase("DatabaseName");
var collection = database.GetCollection<BsonDocument>("CollectionName");

//This is the place of error
var count1 = collection.CountDocuments(new BsonDocument());


Я попытался поиграть с ConnectTimeout, SocketTimeout и wTimeOut, но ошибка была той же самой.

Я также пытался сделать то же самое, используя строку подключения, но я не мог понять, как создать строку подключения с этими многими параметрами.

1 Ответов

Рейтинг:
0

Vincent Maverick Durano

Я никогда раньше не пробовал использовать mongoDB, но обычно тайм-аут предполагает, что соединение было отклонено из-за неправильной конфигурации. Попробуйте установить connectionString вместо этого следующим образом:

var connectionString = @"mongodb://username%40REALM.com:password@myserver/?authMechanism=GSSAPI";
var client = new MongoClient(connectionString);