Драйвер Mongodb С# - не может использовать аутентификацию администратора для доступа к другим базам данных

Когда вы входите в систему как пользователь-администратор (пользователь базы данных администратора) в консоли MongoDB, вы можете иметь полный доступ к любой базе данных на том же сервере без необходимости входа в каждую из них. Но если я использую официальный драйвер С# и предоставляю строку подключения к базе данных администратора, то при попытке доступа к любой другой базе данных я получаю ошибку аутентификации. Это происходит в MongoServerInstance.AcquireConnection(), где он пытается повторно аутентифицировать соединение и сверяет учетные данные базы данных администратора с другой базой данных, что, конечно, не удается.

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

Что я могу сделать, чтобы драйвер С# работал так же, как консоль, с точки зрения аутентификации?


person Andrey    schedule 20.07.2011    source источник


Ответы (1)


После того, как я покопался в коде аутентификации драйвера MongoDB, я обнаружил, что вам нужно добавить «(admin)» после имени пользователя администратора в строке подключения, чтобы сообщить драйверу, что это на самом деле логин администратора. После этого все работает как положено!

person Andrey    schedule 20.07.2011
comment
ба, представь. где ты это нашел ;) +1 - person Andrew Orsich; 23.08.2011
comment
@Andrew - в глубине исходного кода. Казалось бы, это должно быть задокументировано... - person Andrey; 10.01.2012
comment
не могли бы вы привести пример строки подключения? это было использовать пользователя adminAnyDatabase? - person Jordan Morris; 01.06.2013
comment
Итак, возможно ли иметь отдельные учетные данные для каждой базы данных с помощью драйвера C#? Я видел еще один пост SO, в котором говорилось «да», используя вызов GetDatabase(), но в отличие от этого поста этот вызов не имеет перегрузки, которая принимает учетные данные, а только второй параметр, который является объектом MongoDatabaseSettings. - person Robert Oschler; 25.08.2013