Salut tout le monde !
Je me bats désespérément avec le driver PHP de MongoDB pour l’authentification.
J’ai une base MongoDB en version 3.4.5 et j’utiliser le driver PHP MongoDB le plus à jour, soit celui-ci.
J’ai donc, pour avoir un minimum de sécurité, ajouter des utilisateurs et me servir de l’authentification pour restreindre les accès.
J’ai donc créé un utilisateur (en regardant ici), grâce à l’outil de DB Robo3T. Bref, tout marche nickel, je peux m’y connecter etc.
Par contre, lorsque j’ai tenté de me connecter depuis le client PHP, impossible.
La documentation est VIDE sur la question de l’authentification mis à part quelques lignes à droite à gauche, et en réunissant tout ça, j’obtiens toujours la même erreur: Authentication failed (blog\vendor\mongodb\mongodb\src\Operation\Find.php(219): MongoDB\Driver\Server->executeQuery('blog.articles', Object(MongoDB\Driver\Query), Object(MongoDB\Driver\ReadPreference))
).
(a croire que les devs de chez mongodb n’en ont rien à faire de l’authentification…)
Mon dernier code source de test, censé être valide selon la doc PHP Mongodb:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | $login_params = [ 'host' => $config->database->host ?? 'localhost', 'port' => $config->database->port ?? '27017' ]; $auth_params = [ 'auth' => $config->database->auth, 'username' => $config->database->username, 'password' => $config->database->password, 'auth_db' => $config->database->auth_db ]; $uri = 'mongodb://' . $login_params['host'] . ':' . $login_params['port'].'/'; $args = ($auth_params['auth'] ? [ 'username' => $auth_params['username'], 'password' => $auth_params['password'], 'authSource' => $auth_params['auth_db'] ] : []); $connection = new MongoDB\Client($uri, $args); |
Et la configuration vient de ce fichier:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | return new \Phalcon\Config([ 'database' => [ 'host' => '192.168.99.100', 'port' => '27017', 'auth' => true, 'username' => '8RpfF9i-PiFl)cjq', 'password' => 'tsXGPMSDCil2p71L5S9Wg3caMYVqZ89d', 'auth_db' => 'admin' ], 'application' => [ 'appDir' => APP_PATH . '/', 'controllersDir' => APP_PATH . '/controllers/', 'modelsDir' => APP_PATH . '/models/', 'migrationsDir' => APP_PATH . '/migrations/', 'viewsDir' => APP_PATH . '/views/', 'pluginsDir' => APP_PATH . '/plugins/', 'libraryDir' => APP_PATH . '/library/', 'cacheDir' => BASE_PATH . '/cache/', // This allows the baseUri to be understand project paths that are not in the root directory // of the webpspace. This will break if the public/index.php entry point is moved or // possibly if the web server rewrite rules are changed. This can also be set to a static path. 'baseUri' => preg_replace('/public([\/\\\\])index.php$/', '', $_SERVER["PHP_SELF"]), ] ]); |
Je suis donc totalement bloqué, sans la moindre idée de comment procéder. Merci d’avance pour l’aide !