Auth Не удалось подключиться из сценария Fantom к MongoDB, размещенной в MongoLab. В чем дело?

Я пытаюсь подключиться к удаленной MongoDB v3.0.8, размещенной в MongoLab, используя скрипт Fantom v1.0.67. Я использую драйвер afMongo v1.0.4. Линия подключения:

mongoClient := MongoClient(
    ActorPool(),
    `mongodb://mydbuser:mydbpassword@ds0#####.mongolab.com:#####/mymongodb`
)

Обратите внимание, что заполнители mydbuser, mydbpassword и ##### заменяются правильными значениями. Соединение установлено успешно, когда я запускаю следующую команду из оболочки:

mongo ds0#####.mongolab.com:#####/mymongodb -u mydbuser -p mydbpassword

но из сценария Fantom я получаю эту ошибку:

afMongo::MongoCmdErr: Command 'authenticate' failed. MongoDB says: auth failed
  afMongo::Operation.runCommand (Operation.fan:36)
  afMongo::Operation.runCommand (Operation.fan)
  afMongo::Connection$.authenticate (Connection.fan:34)
  afMongo::TcpConnection.authenticate (Connection.fan:51)
  afMongo::ConnectionManagerPooled.checkOut (ConnectionManagerPooled.fan:458)
  afMongo::ConnectionManagerPooled.leaseConnection (ConnectionManagerPooled.fan:320)
  afMongo::Cmd.run (Cmd.fan:71)
  afMongo::Database.runCmd (Database.fan:36)
  afMongo::MongoClient.runAdminCmd (MongoClient.fan:107)
  afMongo::MongoClient.buildInfo (MongoClient.fan:64)
  afMongo::MongoClient.startup (MongoClient.fan:119)
  afMongo::MongoClient.makeFromUri$ (MongoClient.fan:41)
  afMongo::MongoClient.makeFromUri$ (MongoClient.fan)
  afMongo::MongoClient.makeFromUri (MongoClient.fan:38)

Я также попробовал Robomongo v0.8.4 с похожим результатом: всплывающее диалоговое окно с надписью...

  • Успешно подключен к ds0 #####. Mongolab.com:#####
  • Авторизация не удалась

Я запустил скрипт Fantom, а также Robomongo, успешно подключившись и аутентифицировавшись к базам данных MongoDB v2.6.3 и v3.0.8, размещенным локально.

Моя версия Java - Java(TM) SE Runtime Environment (сборка 1.8.0_05-b13)

Я не знаю, зависят ли Robomongo или Fantom / afMongo от Java или системной библиотеки, которая устарела.

Что не так или что я должен проверять, пожалуйста?

1 ответ

Решение

Сбои аутентификации в Robomongo v0.8.4 и afMongo 1.0.4 связаны с новым механизмом аутентификации в MongoDB v3, который называется SCRAM-SHA-1.

AfMongo был обновлен с реализацией SCRAM-SHA-1 над SASL, Он автоматически обнаруживает базы данных Mongo v3 и переключает протокол аутентификации, возвращаясь к старому MONGODB-CR когда нужно - посмотрите этот коммит.

Эти изменения еще не были выпущены, потому что это зависит от нового метода Buf.pbk(...) это доступно только в Fantom 1.0.68 - который сам по себе не выпущен. Обновленная версия afMongo v1.0.6 будет выпущена, как только появится версия Fantom 1.0.68.

Вы можете скомпилировать Fantom 1.0.68 и afMongo 1.0.6 из исходного кода, но, честно говоря, самое простое решение (пока) - просто использовать базу данных MongoDB v2.6.

Обратите внимание, что при необходимости клиент GUI MongoChef может проходить аутентификацию в базах данных MongoDB v3.

Другие вопросы по тегам