2011-06-25 8 views
1

JavaクライアントアプリケーションにMongodb Javaドライバを使用しています。リモートで実行されているmongodbサーバに接続する必要があります。Mongodb:クライアント側のユーザー認証セキュリティの問題

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

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

ところで、db.authenticateは、char []はパスワードとして....ようdb.authenticate()が動作していないが必要です。

私が考えた別の解決策は、mongodbにのみ接続する仲介者サーバーを使用することでした。アプリケーションはHTTP POST経由で中間サーバーに接続します。

しかし、私はJSONにシリアル化されたJavaオブジェクトをmongodbに直接格納する必要があります。そのため、中規模のサーバーを使用すると処理が難しくなります。

答えて

2

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

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

0

Authは、 "admin" dbで行う必要があります。代わりに以下を使用します

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

それはちょうどそれをしない証明書、ハードコードするベストプラクティスは、セキュリティに反しています。 Scottが言及したように、Webサービス層が最善の方法です。

私はMongoDBのユーザーカンファレンスに行き、サードパーティの認証システム(アクティブディレクトリ/ LDAPなど)に取り組んでいると言われました。これが利用可能になると、Windows統合認証など(ドライバがサポートしていることを前提にして)、または少なくともLDAPを使用したパスワード認証

関連する問題