L’authentification MongoDB-CR a échoué

J’obtiens l’erreur suivante lors de l’authentification de l’utilisateur: purchase_user @ purchase failed. L’authentification MongoDB-CR a échoué. Informations d’identification manquantes dans le document utilisateur lorsque j’accède au service Web via le navigateur.

Mais je suis capable d’authentifier la commande buy_user de mongo qu’elle renvoie 1.

allez dans la console mongoDB et supprimez votre utilisateur actuel et définissez la version de authSchema sur 3 au lieu de 5, suivez ces commandes dans la console mongo –

mongo use admin db.system.users.remove({}) <== removing all users db.system.version.remove({}) <== removing current version db.system.version.insert({ "_id" : "authSchema", "currentVersion" : 3 }) 

Maintenant, redémarrez le mongod et créez un nouvel utilisateur, cela devrait fonctionner correctement.

Remarque: utilisez uniquement les commandes remove de la firebase database test, si vous utilisez la mise à jour en production.

Eu le même problème. Ce qui m’arrivait était que lorsque j’utilisais MongoDB 3 pour créer mon utilisateur, il utilisait SCRAM-SHA-1 comme mécanisme d’authentification au lieu de MongoDB-CR. Ce que je devais faire était:

  1. Élément de la liste
  2. Supprimez l’utilisateur créé.
  3. Modifiez la collection admin.system.version de sorte que la version actuelle de l’authSchema soit 3 au lieu de 5 (3 utilise MongoDB-CR).
  4. Recréez votre utilisateur.

Devrait fonctionner sans problèmes maintenant.

L’étape numéro 2 ci-dessus n’est pas explicitement détaillée, j’ai trouvé cette solution et travaillé pour moi.

 var schema = db.system.version.findOne({"_id" : "authSchema"}) schema.currentVersion = 3 db.system.version.save(schema) 

Je pense que c’est la réponse dont vous avez besoin:

1) Démarrer 3.0 sans autorisation activée. (L’authentification doit être désactivée sinon vous obtiendrez l’erreur non autorisée).

2) Exécuter (après avoir sélectionné “admin”, utilisez db):

var schema = db.system.version.findOne ({“_ id”: “authSchema”})

schema.currentVersion = 3

db.system.version.save (schéma)

3) redémarrer mongodb avec auth activé.

4) Créez un nouvel utilisateur admin (l’ancien, celui que vous avez créé avant que cette solution ne fonctionne pas).

Les choses devraient fonctionner maintenant. Ce problème me rendait aussi fou.

La réponse est venue ici: https://jira.mongodb.org/browse/SERVER-17459

Ajout de la solution ci-dessus par Vivek et explication prise ici

 use admin db.system.users.remove({}) <== removing all users db.system.version.remove({}) <== removing current version db.system.version.insert({ "_id" : "authSchema", "currentVersion" : 3 }) 
  • il suffit de rétrograder le schéma pour créer des utilisateurs MONGODB-CR. Une fois qu'ils sont là, les anciens pilotes fonctionneront quelle que soit la valeur de authSchemaVersion. Cependant, si vous exécutez authSchemaUpgrade pour passer de "3" à "5", les utilisateurs seront évidemment mis à niveau.
  • Mon commentaire concernant les nouveaux utilisateurs était que si vous avez des utilisateurs SCRAM existants et modifiez le schéma manuellement en "3", les documents utilisateur ne seront pas cohérents avec le nouveau schéma. Cela n'est toutefois pas appliqué, mais les utilisateurs de SCRAM continueront à travailler pour tout pilote prenant en charge SCRAM.

Mettez mongo-java-driver à la version 3.0.3 et utilisez: –

MongoCredential.createScramSha1Credential au lieu de MongoCredential.createMongoCRCredential

MongoCredential createMongoCRCredential = MongoCredential.createScramSha1Credential (mongoConfiguration.getDatabaseUserName (), mongoConfiguration.getAuthenticationDatabase (), mongoConfiguration.getDatabasePassword (). ToCharArray ());

http://docs.mongodb.org/master/release-notes/3.0-scram/

Pour moi, j’utilisais un client mongo 2 essayant de me connecter à un serveur mongo 3. La mise à niveau du client a résolu le problème.

J’avais aussi cette erreur.

Vérifiez votre fichier Spring Config. J’avais un argument de constructeur nommé “MONGODB-CR” que j’ai échangé contre “SCRAM-SHA-1” et il a corrigé mon problème.

le fichier journal de mongodb m’a aidé à diagnostiquer cela.

Probablement les vieilles nouvelles et le problème résolu, mais en ajoutant mon expérience avec la même erreur:

J’ai eu exactement le même problème (en utilisant MongoDB 3.0), et un pilote C # qui était configuré pour utiliser une version 3.0 db.

En C # j’ai utilisé “MongoDB.Driver.CreateMongoCRCredentials ()”, ce qui a provoqué l’erreur que l’OP obtenait.

Le correctif (pour moi) consistait à passer la commande ci-dessus à “MongoDB.Driver.CreateCredential ()”.

Je suppose que cela pourrait être dû à l’utilisation d’anciens utilisateurs (à partir de la version 3.0) sur un système mis à niveau. Ce qui vous oblige à mettre à niveau vos utilisateurs vers le nouveau mécanisme d’authentification ou à rétrograder le mécanisme d’authentification sur votre serveur.

  • désinstaller les paquets mongodb-clients fournis par Ubuntu
  • installez mongodb-org-shell fourni par MongoDB officiel

Cela a résolu le problème, car le paquetage non officiel mongodb fourni par Ubuntu n’est pas géré par MongoDB. Vous devez toujours utiliser les paquets mongodb-org officiels de MongoDB, qui sont tenus à jour avec les versions majeures et mineures les plus récentes de MongoDB.

Juin 2018 J’ai eu cette erreur après avoir essayé de me connecter à la version 3.6 de Mongodb à partir d’un ancien client installé dans / usr / bin. J’ai installé la firebase database mongo dans un dossier distinct du répertoire standard du système d’exploitation et mon installation était en conflit avec l’ancienne version installée par le gestionnaire de paquets.

J’ai eu la même erreur avec une application Spring Boot en utilisant une nouvelle firebase database MongoDB 3.2.8. En effectuant une mise à niveau vers la dernière version du pilote Java Mongo (3.2.2), puis en ajoutant le paramètre du mécanisme d’authentification à l’URI dans mon application.properties, j’ai pu le faire fonctionner:

 spring.data.mongodb.uri=mongodb://myusername:mypassword@localhost/?authSource=admin&authMechanism=SCRAM-SHA-1 spring.data.mongodb.database=test