如何使用Kerberos从node.js应用服务器连接Oracle DB?

时间:2019-04-10 14:56:03

标签: node.js oracle kerberos

我正在开发基于 express和node.js 的应用程序服务器,该服务器将在Kubernetes容器上运行。该应用程序需要来自Oracle DB的数据。我可以连接到Oracle的唯一方法是使用Kerberos(企业策略规定了这一点)。

我已经有其他团队开发的Sidecar,这使我获得了TGT,但我无法连接OracleDB并通过TGT。找不到执行此操作的示例代码。.请提出建议吗?

我有

  1. 使用npm模块oracledb@2.3.0的NodeJS应用程序。
  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);
          });
        });
    }
    //...
    //...

期望连接成功并有望解决。

0 个答案:

没有答案