1

JavaクライアントアプリケーションにMongodbJavaドライバーを使用しています。リモートで実行されているmongodbサーバーに接続する必要があります。

誰かがjarを逆コンパイルし、mongodbサーバーへのIPアドレスを見つけて、それにアクセスする可能性があるのではないかと心配しています。ただし、ユーザーには読み取りおよび書き込みアクセス権が必要です。ユーザーごとにデータベースを作成して認証する必要がありますか?または自分でユーザーコレクションを作成しますか?

mongo =  new Mongo("mongodb.server", 27017);
                db = mongo.getDB("mydatabase");
                db.authenticate("test", "password");

ところで、db.authenticateはパスワードとしてchar []を必要とするため、db.authenticate()は機能しません。

私が考えたもう1つの解決策は、mongodbにのみ接続する仲介サーバーを使用することでした。アプリケーションは、HTTPPOSTを介して仲介サーバーに接続します。

ただし、JSONにシリアル化されたJavaオブジェクトをmongodbに直接格納する必要があるため、仲介サーバーを使用すると問題が発生します。

4

3 に答える 3

2

クライアントにコードをデプロイする場合は、データベースごとにユーザーを作成して入力するか、アプリケーションのリソースとして含めることができます(各ユーザーのダウンロードに固有)。

一般に、人々はデータベースを(信頼できない)クライアントに直接公開しません。この目的のためにREST/Remote-APIを作成することができます。この目的では、各アプリケーション機能に認証が必要であり、承認することができます。

于 2011-06-25T17:56:45.033 に答える
0

認証は「admin」データベースで行う必要があります。代わりに以下を使用してください。

mongo =  new Mongo("mongodb.server", 27017);
db = mongo.getDB("admin");
db.authenticate("test", "password");
db=mongo.getDB("mydatabase");
于 2012-05-31T02:48:14.373 に答える
0

クレデンシャルをハードコーディングすることはセキュリティのベストプラクティスに反します-それをしないでください。スコットが述べたように、Webサービスレイヤーはそれを実行するための最良の方法です。

MongoDBユーザー会議に行ったところ、サードパーティの認証システム(Active Directory / LDAPなど)で作業していると言われました。それが利用可能になると、Windows統合認証など(ドライバーがサポートしていると仮定)などを使用できるようになるか、少なくともLDAPを使用したパスワード認証を使用できるようになります。

于 2012-08-24T08:01:05.310 に答える