Простая текстовая аутентификация sasl в gremlin-javascript

Я пытаюсь подключиться к серверу Gremlin с вариантом драйвера JavaScript.

До версии пакета 2.7.0 это можно легко сделать, передав параметры в Gremlin.createClient(), как в этот пример для Azure Cosmos DB:

const client = Gremlin.createClient(
  config.port, 
  config.endpoint, 
  { 
    "session": false, 
    "ssl": true, 
    "user": `/dbs/${config.database}/colls/${config.collection}`,
    "password": config.primaryKey
  }
);

В более новых версиях пакета я не могу этого сделать. официальные документы предлагает использовать gremlin.driver.auth.PlainTextSaslAuthenticator. Однако этот метод, похоже, не реализован в пакете и возвращает TypeError: Cannot read property 'PlainTextSaslAuthenticator' of undefined.

Мой тестовый код (тот же config.js, что и в рабочем примере):

const gremlin = require("gremlin");
const config = require("./config");

const Graph = gremlin.structure.Graph;
const DriverRemoteConnection = gremlin.driver.DriverRemoteConnection;

const graph = new Graph();

const authenticator = new gremlin.driver.auth.PlainTextSaslAuthenticator(
  `/dbs/${config.database}/colls/${config.collection}`,
  config.primaryKey
);

const g = graph.traversal().withRemote(new DriverRemoteConnection(`ws://${config.endpoint}:${config.port}`, { authenticator });

Возвращение:

C:\repos\gremlin-test\index.js:9
const authenticator = new gremlin.driver.auth.PlainTextSaslAuthenticator(
                                          ^

TypeError: Cannot read property 'PlainTextSaslAuthenticator' of undefined
    at Object.<anonymous> (C:\repos\gremlin-test\index.js:9:47)
    at Module._compile (module.js:652:30)
    at Object.Module._extensions..js (module.js:663:10)
    at Module.load (module.js:565:32)
    at tryModuleLoad (module.js:505:12)
    at Function.Module._load (module.js:497:3)
    at Function.Module.runMain (module.js:693:10)
    at startup (bootstrap_node.js:191:16)
    at bootstrap_node.js:612:3

Кто-нибудь знает решение этого?

1
0
476
1

Ответы 1

У меня нет большого опыта работы с Gremlin.js, но я только что загрузил его и вручную просмотрел все его файлы - я не могу найти никаких следов функции PlainTextSaslAuthenticator или ее объявления.

Это могло означать одно из двух трех -

  1. Его функция была (случайно) удалена
  2. Он использует сторонний пакет, который был (случайно) удален
  3. Он еще не добавлен в пакет

После быстрого поиска в Google я нашел эта ссылка, который, кажется, показывает, что он добавлен в /lib/driver/auth, но этот каталог, похоже, не существует в пакете, который я получил через npm install gremlin. Возможно, он еще не выпущен?

Поэтому я предлагаю вам поднять вопрос на Github, но похоже, что связанный с вами репозиторий не позволяет поднимать проблемы. Так что, возможно, напишите / свяжитесь с автором?

Обновлено:

Спасибо Стивен за ссылку - код еще не добавлен в пакет. Следите за ним здесь.

Поддержка SASL в javascript только недавно объединила github.com/apache/tinkerpop/pull/889 - она ​​действительно будет доступна в следующем выпуске.

stephen mallette 10.09.2018 12:43

Другие вопросы по теме