oracle / node-oracledb

Oracle Database driver for Node.js maintained by Oracle Corp.
http://oracle.github.io/node-oracledb/
Other
2.24k stars 1.07k forks source link

Connection through LDAP not working #1623

Closed Wernfried closed 8 months ago

Wernfried commented 8 months ago

We use alias resolution by OID (LDAP). The connection is not working:

const db = { user: "PMDUSER", password: "secret", connectString: "PPMD01" };
const connection = await oracledb.getConnection(db);

Error: NJS-517: cannot connect to Oracle Database. Unable to find "PPMD01" in "C:\oracle\network\admin/tnsnames.ora"
    at Object.throwErr (c:\Programs\nodejs\node_modules\oracledb\lib\errors.js:588:10)
    at resolveConnectStr (c:\Programs\nodejs\node_modules\oracledb\lib\thin\sqlnet\networkSession.js:83:18)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
    at async resolveAddress (c:\Programs\nodejs\node_modules\oracledb\lib\thin\sqlnet\networkSession.js:98:17)
    at async NetworkSession.connect (c:\Programs\nodejs\node_modules\oracledb\lib\thin\sqlnet\networkSession.js:511:23)
    at async ThinConnectionImpl.connect (c:\Programs\nodejs\node_modules\oracledb\lib\thin\connection.js:507:5)
    at async Object.getConnection (c:\Programs\nodejs\node_modules\oracledb\lib\oracledb.js:628:3)
    at async getHuaweiMeta (C:\Developing\Source\MCMS\Server\Deployment\New POCL MOCN.js:50:26)
    at async main (C:\Developing\Source\MCMS\Server\Deployment\New POCL MOCN.js:30:15) {
  code: 'NJS-517'
}

The sqlnet.ora and TNS_ADMIN are properly set. I am using node v20.8.1 on Windows 10 64-bit. Oracle client is version 12.1.

The same code works fine in oracledb@5.3.0, oracledb@5.4.0, oracledb@5.5.0 but in oracledb@6.0.0 and newer it fails.

Kind Regards Wernfried

sharadraju commented 8 months ago

Thanks for using node-oracledb. node-oracledb 6.0 has two modes by default - the 'Thin' and 'Thick' modes. The Thin mode is the default mode implemented purely in JavaScript and the Thick mode uses Oracle Client libraries like the previous versions.

LDAP is not supported in the default Thin mode for now. So to support LDAP, Please enable Thick mode. You just have to add an initOracleclient() call to enable Thick mode.

Wernfried commented 8 months ago

Yes, it is working in thick mode. Thanks for explanation.

Wernfried