Многие "плохой одноразовый номер получен или не вызван" в журнале Монго - PullRequest
0 голосов
/ 09 июля 2011

Привет всем,

Теперь я использую монго в качестве базы данных.Я обнаружил, что мое монго-соединение автоматически сбрасывается или иногда прерывается.Затем я нашел странное сообщение в моем файле журнала mongo, которое выглядит как

auth: bad nonce received or getnonce not called. could be a driver bug or a security attack. db:User

. Я его погуглил, но, похоже, эта проблема возникла у нескольких пользователей, и я нашел только исходный код в github со ссылкой https://github.com/mongodb/mongo/blob/master/db/security_commands.cpp. Из кода клиент отправляет user_name, use_password, nonce на сервер для аутентификации, сообщение журнала вызывается разницей между одноразовым номером, отправленным клиентом и распределенным сервером.

Что-то не так с моим драйвером монго?Кто-нибудь сталкивался с этой проблемой?

1 Ответ

1 голос
/ 23 марта 2012

Я также столкнулся с этой ошибкой, когда использовал mongodb-2.0.2 и java-driver2.7.3.Это единственный сервер mongodb для разработки с открытой опцией --auth.

Я понимаю, что это вызвано аутентификацией в многопоточности:

DB db = m.getDB(dbName);
if(!db.isAuthenticated())
{
        boolean pass = db.authenticate(name, pwd.toCharArray());
        if(!pass)
            throw new Exception("User " + name + " authentication failed for db " + dbName + "!");
}

Со стороны сервера, перед тем как один запрос на аутентификациювыполнено, другой поток отправил новый запрос, который приводит к переопределению первого запроса.

После добавления synchronized к этому методу он больше не появлялся.

...