Java MongoDB: exemple d’authentification

Java MongoDB: exemple d'authentification

Par défaut, MongoDB est exécuté dans un environnement de confiance (l'authentification avec un nom d'utilisateur et un mot de passe n'est PAS requise). Dans ce didacticiel, nous allons vous montrer comment démarrer MongoDB en mode sécurisé / activer l'authentification et vous connecter avec le pilote Java MongoDB.

1. Démarrez MongoDB en mode sécurisé

Démarrez MongoDB avec l'option--auth, maintenant, MongoDB a besoin d'un nom d'utilisateur et d'un mot de passe pour effectuer toutes les opérations de base de données / collecte.

mongod --auth

Plus tard, nous devons nous connecter à la base de données «testdb», alors ajoutez un utilisateur pour un test plus tard.

> use admin
> db.addUser("admin","password")
> use testdb
> db.addUser("example","password")

Pour activer l'authentification MongoDB, vous devez d'abord ajouter un utilisateur à la base de données spéciale «admin», veuillez vous référer à ce guide de détailsMongoDB authentication example.

2. Exemple d'authentification Java + MongoDB

Si MongoDB est démarré en mode sécurisé, l'opération ci-dessous «insérer» n'est plus valide et affiche le message d'erreur «besoin de se connecter».

    Mongo mongo = new Mongo("localhost", 27017);
    DB db = mongo.getDB("testdb");

    DBCollection table = db.getCollection("user");

    BasicDBObject document = new BasicDBObject();
    document.put("name", "example");
    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.example.core.App.main(App.java:40)

Maintenant, en utilisantdb.authenticate() pour effectuer l'authentification, une valeur de retour de true = success, false = fail.

package com.example.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", "example");
        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();
    }
  }
}