Ошибка аутентификации при попытке подключения из сценария Fantom к базе данных MongoDB, размещенной в MongoLab. Что случилось?

Я пытаюсь подключиться к удаленной базе данных MongoDB v3.0.8, размещенной в MongoLab, используя Фантом скрипт 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 или System.

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


person LightDye    schedule 28.12.2015    source источник


Ответы (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 версии 2.6.

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

person Steve Eynon    schedule 28.12.2015