2

Fantom v1.0.67 スクリプトを使用して、MongoLabでホストされているリモート MongoDB v3.0.8 に接続しようとしています。私が使用しているドライバーは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 ライブラリやシステム ライブラリに依存しているかどうかはわかりません。

何が間違っているか、何を確認する必要がありますか?

4

1 に答える 1

2

Robomongo v0.8.4 と afMongo 1.0.4 の両方での認証の失敗は、SCRAM-SHA-1 と呼ばれる MongoDB v3の新しい認証メカニズムが原因です。

afMongo はSCRAM-SHA-1overの実装で更新されましたSASL。Mongo v3 データベースを自動検出し、認証プロトコルを切り替えて、必要に応じて古いものにフォールバックしMONGODB-CRます -このコミットを参照してください。

Buf.pbk(...)これらの変更は、まだリリースされていないFantom 1.0.68 でのみ使用可能な新しいメソッドに依存しているため、まだリリースされていません。Fantom 1.0.68 がリリースされるとすぐに、更新された afMongo v1.0.6 がリリースされます。

Fantom 1.0.68 と afMongo 1.0.6 をソースからコンパイルすることもできますが、正直なところ、(当面の間) 最も簡単な修正は、v2.6 MongoDB データベースを使用することです。

必要に応じて、MongoChef GUI クライアントは MongoDB v3 データベースに対して認証できることに注意してください。

于 2015-12-28T01:42:28.587 に答える