Я работаю над созданием сервера приложений на основе express и node.js , который будет работать в контейнере Kubernetes.Для этого приложения нужны данные из базы данных Oracle.Единственный способ, которым я мог соединиться с Оракулом, является с Kerberos (корпоративная политика диктует это).
У меня уже есть коляска, разработанная какой-то другой командой, которая получает мне TGT, но я не могу подключиться к OracleDB и передать TGT.Не удается найти пример кода, который делает это .. Можете ли вы предложить?
У меня есть
- Приложение NodeJS с использованием модуля npm oracledb@2.3.0.
- Сервер базы данных Oracle 12.
- NodeJS LTS версия.
- Мой код работает, если я использую идентификатор пользователя и пароль в качестве механизма подключения, но не могу понять, как пройти аутентификацию на основе TGT.
- Посмотрел документацию по библиотеке 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);
});
});
}
//...
//...
Ожидается, что соединение будет успешным и обещание будет разрешено.