2011-07-09 2 views
0

    Salut à tous,"mauvais reçu ou nonce getnonce pas appelé" à mongo log

    Maintenant, j'utiliser mongo comme ma base de données. J'ai trouvé que ma connexion mongo est réinitialisée automatiquement ou a parfois échoué. Ensuite, je trouve un peu étrange message dans mon mongo fichier journal, qui est

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

    Je googlé, mais il semblait peu d'utilisateurs ont encounted ce problème, et je ne trouve le code source en github avec lien https : //github.com/mongodb/mongo/blob/master/db/security_commands.cpp. À partir du code, le client envoie nom_utilisateur, use_password, non au serveur pour l'authentification, le message de journal est provoqué par la différence entre le nonce envoyé par le client et distribué par le serveur.

    Y at-il un problème avec mon pilote mongo? Quelqu'un a rencontré ce problème?

Répondre

1

J'ai également rencontré cette erreur lorsque j'utilisais mongodb-2.0.2 et java-driver2.7.3. C'est un serveur mongodb unique pour le développement avec l'option --auth ouverte.

Je comprends qu'il est causé par l'authentification dans le multi-threading:

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 + "!"); 
} 

Du côté serveur, avant une demande d'authentification est accomplie, un autre thread a envoyé une nouvelle demande, ce qui provoque le premier à être surchargée. Après l'ajout de synchronized à cette méthode, il n'apparaît plus jamais.

Questions connexes