Как подключить БД Oracle с сервера приложений node.js, используя Kerberos? - PullRequest
0 голосов
/ 10 апреля 2019

Я работаю над созданием сервера приложений на основе express и node.js , который будет работать в контейнере Kubernetes.Для этого приложения нужны данные из базы данных Oracle.Единственный способ, которым я мог соединиться с Оракулом, является с Kerberos (корпоративная политика диктует это).

У меня уже есть коляска, разработанная какой-то другой командой, которая получает мне TGT, но я не могу подключиться к OracleDB и передать TGT.Не удается найти пример кода, который делает это .. Можете ли вы предложить?

У меня есть

  1. Приложение NodeJS с использованием модуля npm oracledb@2.3.0.
  2. Сервер базы данных Oracle 12.
  3. NodeJS LTS версия.
  4. Мой код работает, если я использую идентификатор пользователя и пароль в качестве механизма подключения, но не могу понять, как пройти аутентификацию на основе TGT.
  5. Посмотрел документацию по библиотеке oracledb и заметил, что нужно передать externalAuth как true.
    const oracledb = require('oracledb');
    //...
    //...
    function connect () {
        return new Promise((resolve, reject) => {
        const db_user = process.env.DB_USER || 'user,
          db_password = process.env.DB_PASSWORD || 'pwd',
          db_host     = process.env.DB_HOST || 'host',
          db_port     = process.env.DB_PORT || 'port',
          db_database = process.env.DB_DATABASE || 'database';
        const ticket = fs.readFileSync("krb5ccFile", 'utf8');
        console.log(ticket);
        oracledb.getConnection({
          externalAuth  : true,
          connectString : db_host + ":" + db_port + "/" + db_database,
          'WWW-Authenticate': 'Negotiate ' + ticket //not sure if this is correct ??
        })
        .then(connection => resolve(connection))
        .catch(e => {
          console.error('CONNECTION ERROR');
          console.error(e);
          reject(e);
          });
        });
    }
    //...
    //...

Ожидается, что соединение будет успешным и обещание будет разрешено.

...