Невозможно пройти аутентификацию при использовании MongoClientSettings - PullRequest
0 голосов
/ 28 мая 2018

Я пытаюсь подключиться к базе данных MongoDb.

  • Мой клиент: ASP.NET Core 2 с MongoDb.Driver 2.6.1
  • Мой сервер: MongoDb 3.6.5Community Edition, автономно (без реплики), 64-разрядная версия в Windows Server 2016.

Аутентификация по строке подключения - , работа:

public MongoDbContext(AppSettings appSettings)
{
    var connectionString = "mongodb://myUsername:myPassword@myDomain.com:27017/myDatabaseName";

    _client = new MongoClient(connectionString);

    // ...
}

Аутентификация с помощью MongoClientSettings НЕ работает:

public MongoDbContext(AppSettings appSettings)
{
    var credentials = MongoCredential.CreateMongoCRCredential(databaseName: "myDatabaseName", username: "myUsername", password: "myPassword");
    var server = new MongoServerAddress(host: "myDomain.com", port: 27017);

    var mongoClientSettings = new MongoClientSettings
    {
        Credential = credentials,
        Server = server,
        ConnectionMode = ConnectionMode.Standalone,
        ServerSelectionTimeout = TimeSpan.FromSeconds(3)
    };

    _client = new MongoClient(mongoClientSettings);

   // ...
}

TimeoutException: истекло время ожидания после 3000 мс при выборе сервера с помощью CompositeServerSelector {Selectors = MongoDB.Driver.MongoClient + AreSessionsSupporServerSversitorSvertingSverSenseSversitorSvertingServerServerServerServerSenseAllowedLatencyRange = 00: 00: 00.0150000}}.Клиентское представление состояния кластера: {ClusterId: "1", ConnectionMode: "Автономный", Тип: "Автономный", Состояние: "Отключен", Серверы: [{ServerId: "{ClusterId: 1, EndPoint:" Unspecified / myDomain.com: 27017 "}", конечная точка: "Unspecified / myDomain.com: 27017", состояние: "Disconnected", тип: "Unknown", HeartbeatException: "MongoDB.Driver.MongoConnectionException: возникла исключительная ситуация при открытии соединения с сервером. ---> MongoDB.Driver.MongoAuthenticationException: невозможно аутентифицировать имя пользователя «myUsername» в базе данных «myDatabaseName». ---> MongoDB.Driver.MongoCommandException: сбой аутентификации команды: ошибка аутентификации.

Я использовал одни и те же значения для обоих подходов (в верхнем и нижнем регистре). Но только подход MongoClientSetting вызывает исключение. Однако по другим причинам я предпочел бы использовать подход MongoClientSetting, а не строку подключения.основанный на подходе.

Я что-то упустил или это ошибка в драйвере MongoDb для C #?

Чтобы избежать недоразумений: в приведенных выше примерах я обменял все действительные значения (имя пользователя, пароль и т. Д.) На поддельные значения.

Спасибо за любую помощь!

1 Ответ

0 голосов
/ 23 июня 2018

Это проблема аутентификации, связанная с вызовом MongoCredential.CreateMongoCRCredential, который создает учетные данные с использованием механизма аутентификации MONGODB-CR (вызов-ответ).

Отслеживает предоставленное исключение вплоть до MongoDBCRAuthenticator

Хотя устарело с MongoDB 3.6 , первоначальный вопрос указывался с использованием MongoDb.Driver 2.6.1

Однако рабочее соединениеСтрока не имеет параметров проверки подлинности authMechanism, что подразумевало бы использование механизма проверки подлинности по умолчанию.

Использование MongoCredential.CreateCredential для создания учетных данных по умолчанию, аналогичных тем, которые использовались при подключениистрока

var credentials = MongoCredential.CreateCredential(
    databaseName: "myDatabaseName", 
    username: "myUsername", 
    password: "myPassword"
);
...