La autenticación de MongoDB-CR falló

Recibo un error de seguimiento al autenticar al usuario: purchase_user @ purchase failed. MongoDB-CR Autenticación fallida. Faltan credenciales en el documento del usuario cuando accedo al servicio web a través del navegador.

Pero puedo autenticar purchase_user de mongo, devuelve 1.

Vaya a la consola mongoDB y elimine su usuario actual y configure la versión de authSchema en 3 en lugar de 5, siga estos comandos en la consola 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 }) 

Ahora reinicie mongod y cree un nuevo usuario, entonces debería funcionar bien.

Nota: utilice los comandos de eliminación solo en prueba db, si está en producción, use la actualización.

Tenía el mismo problema. Lo que me estaba pasando es que cuando uso MongoDB 3 para crear mi usuario, estaba usando SCRAM-SHA-1 ya que es un mecanismo de autenticación en lugar de MongoDB-CR. Lo que tenía que hacer era:

  1. Artículo de lista
  2. Eliminar el usuario creado.
  3. Modifique la colección admin.system.version de modo que la versión actual de authSchema sea 3 en lugar de 5 (3 está usando MongoDB-CR).
  4. Recrea a tu usuario.

Debería funcionar sin problemas ahora.

El paso número 2. anterior no se detalla explícitamente, encontré esta solución y funcionó para mí.

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

Creo que esta es la respuesta que necesitas:

1) Inicie 3.0 sin autenticación habilitada. (La autenticación debe estar deshabilitada, de lo contrario obtendrá el error no autorizado).

2) Ejecutar (después de seleccionar “admin” use db):

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

schema.currentVersion = 3

db.system.version.save (esquema)

3) reinicie mongodb con autorización habilitada.

4) Cree un nuevo usuario administrador (el anterior, el que creó antes de que esta solución alternativa no funcione).

Las cosas deberían funcionar ahora. Este problema me estaba volviendo loco también.

La respuesta vino de aquí: https://jira.mongodb.org/browse/SERVER-17459

Agregando a la solución anterior por Vivek y explicación tomada de aquí

 use admin db.system.users.remove({}) <== removing all users db.system.version.remove({}) <== removing current version db.system.version.insert({ "_id" : "authSchema", "currentVersion" : 3 }) 
  • solo necesita degradar el esquema para crear usuarios de MONGODB-CR. Una vez que estén allí, los controladores anteriores funcionarán independientemente del valor de authSchemaVersion. Sin embargo, si ejecuta authSchemaUpgrade para cambiar de "3" a "5", los usuarios obviamente se actualizarán.
  • Mi comentario con respecto a los nuevos usuarios fue que si tienes usuarios SCRAM existentes y cambias el esquema manualmente a "3", los documentos del usuario no serán consistentes con el nuevo esquema. Sin embargo, esto no se aplica, pero los usuarios de SCRAM seguirán trabajando para cualquier controlador compatible con SCRAM.

Actualice mongo-java-driver a 3.0.3 y use: –

MongoCredential.createScramSha1Credential en lugar de MongoCredential.createMongoCRCredential

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

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

Para mí estaba usando un cliente mongo 2 tratando de conectarme a un servidor mongo 3. La actualización del cliente solucionó el problema.

Estaba recibiendo este error también.

Comprueba tu archivo Spring Config. Tuve un arg constructor llamado “MONGODB-CR” que cambié a “SCRAM-SHA-1” y solucionó mi problema.

rastrear el archivo de registro mongodb me ayudó a diagnosticar esto.

Probablemente noticias viejas y problema resuelto, pero agregando mi experiencia con el mismo error:

Tenía exactamente el mismo problema (usando MongoDB 3.0), y un controlador C # que estaba configurado para usar un db pre 3.0.

En C #, utilicé “MongoDB.Driver.CreateMongoCRCredentials ()”, que causaba el error que obtenía el OP.

La solución (para mí) era cambiar el comando de arriba a “MongoDB.Driver.CreateCredential ()”.

Supongo que esto podría deberse al uso de usuarios “antiguos” (de pre 3.0) en un sistema actualizado. Lo cual obliga a actualizar a sus usuarios al nuevo mecanismo de autenticación o a degradar el mecanismo de autenticación en su servidor.

  • desinstalar paquetes de mongodb-clients proporcionados por Ubuntu
  • instalar mongodb-org-shell provisto por MongoDB oficial

Esto resolvió el problema porque MongoDB no mantiene el paquete no oficial de mongodb provisto por Ubuntu. Siempre debe usar los paquetes oficiales de MongoDB mongodb-org, que se mantienen actualizados con las versiones de MongoDB mayores y menores más recientes.

Junio ​​de 2018 Recibí este error después de intentar conectarme a mi versión 3.6 de Mongodb desde un antiguo cliente instalado en / usr / bin. Instalé el mongo DB en una carpeta separada fuera del directorio estándar del sistema operativo, por lo que mi instalación estaba en conflicto con la versión antigua instalada por el administrador de paquetes.

Tuve el mismo error con una aplicación Spring Boot usando una nueva base de datos MongoDB 3.2.8. Al actualizar a la última versión del controlador de Java Mongo (3.2.2) y luego agregar el parámetro de mecanismo de autenticación al URI en mi application.properties, pude ponerlo en funcionamiento:

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