Налаштування проксі у Watson Node SDK для запитів до API та IAM
Використовуйте той самий агент тунелю для клієнта служби Watson та його автентифікатора IAM, щоб токен отримувався через проксі.
Коли виклик Watson не вдається ще до звернення до служби, перевірте, чи невдалий запит не є запитом токена IAM. Виклик з автентифікацією IAM може спершу звернутися до IAM, а потім до служби.
У застосунку, який уже використовує відповідний Watson SDK і залежність tunnel, задайте однакові мережеві налаштування обом об'єктам:
const tunnel = require('tunnel');
const AssistantV2 = require('ibm-watson/assistant/v2');
const { IamAuthenticator } = require('ibm-watson/auth');
const httpsAgent = tunnel.httpsOverHttp({
proxy: { host: 'proxy.example', port: 8080 },
});
const network = { httpsAgent, proxy: false };
const authenticator = new IamAuthenticator({
apikey: apiKey,
...network,
});
const assistant = new AssistantV2({
version: serviceVersion,
serviceUrl,
authenticator,
...network,
});Збережіть наявні в застосунку apiKey, serviceVersion і serviceUrl. Кінцеві точки API та IAM залишаються їхніми передбаченими адресатами; слухач проксі належить агенту. списку HTTP-проксі може надати кандидатні адреси, коли обидві публічні кінцеві точки служби доступні через обраний вами проксі.
tunnel.httpsOverHttp встановлює шлях HTTPS через HTTP-проксі. proxy: false не дає SDK застосувати поверх цього власного агента ще одну вбудовану конфігурацію проксі.
Якщо раніше ви передавали ці налаштування лише об'єкту assistant, автентифікатор — це пропущене місце, яке слід перевірити. Базова автентифікація та вже виданий bearer-токен мають різні життєві цикли отримання токена, тому цей додатковий шлях IAM стосується мережевого автентифікатора, який використовується тут.