Java MongoDB:認証の例
デフォルトでは、MongoDBは信頼環境で実行されます(ユーザー名とパスワードによる認証は不要です)。このチュートリアルでは、セキュアモードでMongoDBを起動し、認証を有効にしてJava MongoDBドライバに接続する方法を説明します。
1. MongoDBをセキュアモードで起動する
MongoDBを `–auth`オプションで起動すると、MongoDBはデータベース/コレクション操作を実行するためにユーザー名とパスワードを必要とします。
mongod --auth
後で、データベース “testdb”に接続する必要があるため、後でテストするためにユーザーを追加してください。
> use admin > db.addUser("admin","password") > use testdb > db.addUser("mkyong","password")
MongoDB認証を有効にするには、特別な “admin”データベースにユーザを追加する必要があります。詳しくは、//mongodb/mongodb-authentication-example/[MongoDB認証の例]を参照してください。
2. Java MongoDB認証の例
MongoDBがセキュアモードで起動されている場合、以下の「挿入」操作は有効でなくなり、「ログインが必要です」というエラーメッセージが表示されます。
Mongo mongo = new Mongo("localhost", 27017); DB db = mongo.getDB("testdb"); DBCollection table = db.getCollection("user"); BasicDBObject document = new BasicDBObject(); document.put("name", "mkyong"); table.insert(document);
com.mongodb.CommandResult$CommandFailure: command failed[getlasterror]: { "serverUsed" : "localhost/127.0.0.1:27017" , "errmsg" : "need to login" , "ok" : 0.0} at com.mongodb.CommandResult.getException(CommandResult.java:88) at com.mongodb.CommandResult.throwOnError(CommandResult.java:134) at com.mongodb.DBTCPConnector.__checkWriteError(DBTCPConnector.java:142) at com.mongodb.DBTCPConnector.say(DBTCPConnector.java:183) at com.mongodb.DBTCPConnector.say(DBTCPConnector.java:155) at com.mongodb.DBApiLayer$MyCollection.insert(DBApiLayer.java:270) at com.mongodb.DBApiLayer$MyCollection.insert(DBApiLayer.java:226) at com.mongodb.DBCollection.insert(DBCollection.java:75) at com.mongodb.DBCollection.insert(DBCollection.java:59) at com.mongodb.DBCollection.insert(DBCollection.java:104) at com.mkyong.core.App.main(App.java:40)
さて、 `db.authenticate()`を使用して認証を実行すると、true =成功、false =失敗の戻り値が返されます。
package com.mkyong.core; import java.net.UnknownHostException; import java.util.Date; import com.mongodb.BasicDBObject; import com.mongodb.DB; import com.mongodb.DBCollection; import com.mongodb.Mongo; import com.mongodb.MongoException; /** ** ** Java + MongoDB in Secure Mode ** ** /public class JavaMongoDBAuthExample { public static void main(String[]args) { try { Mongo mongo = new Mongo("localhost", 27017); DB db = mongo.getDB("testdb"); boolean auth = db.authenticate("testdb", "password".toCharArray()); if (auth) { DBCollection table = db.getCollection("user"); BasicDBObject document = new BasicDBObject(); document.put("name", "mkyong"); table.insert(document); System.out.println("Login is successful!"); } else { System.out.println("Login is failed!"); } System.out.println("Done"); } catch (UnknownHostException e) { e.printStackTrace(); } catch (MongoException e) { e.printStackTrace(); } } }
参考文献
-
リンク://mongodb/java-authentication-access-to-mongodb/[Java MongoDB
認証の例]。
https://jira.mongodb.org/browse/JAVA-45
[JIRA – DB.authenticate()
パスワードにchar[]を使用する必要があります]。
http://docs.mongodb.org/ecosystem/tutorial/getting-started-with-java-driver/#authentication-optional
[MongoDB
Java認証の例]。
http://docs.mongodb.org/manual/administration/security/
[MongoDB
セキュリティの実践と管理]
リンク://タグ/認証/[認証]リンク://タグ/mongodb/[mongodb]