Paramètres de proxy du SDK Node Watson pour les requêtes API et IAM
Partagez l'agent de tunnel entre le client du service Watson et son authentificateur IAM afin que l'obtention du jeton puisse utiliser le proxy.
Lorsqu'un appel Watson échoue avant d'atteindre le service, vérifiez si la requête en échec est la requête de jeton IAM. Un appel authentifié par IAM peut contacter d'abord IAM, puis le service.
Dans une application qui utilise déjà le SDK Watson concerné et la dépendance tunnel, donnez les mêmes paramètres réseau aux deux objets :
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,
});Conservez les apiKey, serviceVersion et serviceUrl existants de l'application. Les points de terminaison API et IAM restent leurs destinations prévues ; l'écouteur du proxy appartient à l'agent. La liste de proxys HTTP peut fournir des adresses candidates lorsque les deux points de terminaison publics du service sont joignables via un proxy que vous choisissez.
tunnel.httpsOverHttp établit le chemin HTTPS via le proxy HTTP. proxy: false empêche le SDK d'appliquer une autre configuration de proxy intégrée par-dessus cet agent personnalisé.
Si vous ne fournissiez auparavant ces paramètres qu'à assistant, l'authentificateur est l'endroit manquant à vérifier. L'authentification de base et un jeton bearer déjà émis ont des cycles de vie d'obtention de jeton différents ; ce chemin IAM supplémentaire concerne donc l'authentificateur réseau utilisé ici.