Настройки прокси в 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 относится к используемому здесь сетевому аутентификатору.