Proxyinnstillinger i Watson Node SDK for API- og IAM-forespørsler
Del tunnelagenten mellom Watson-tjenesteklienten og IAM-autentiseringskomponenten, slik at tokenhentingen kan gå via proxyen.
Når et Watson-kall feiler før det når tjenesten, må du sjekke om den mislykkede forespørselen er IAM-tokenforespørselen. Et IAM-autentisert kall kan kontakte IAM først og tjenesten etterpå.
I et program som allerede bruker den aktuelle Watson SDK-en og tunnel-avhengigheten, gir du de samme nettverksinnstillingene til begge objektene:
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,
});Behold programmets eksisterende apiKey, serviceVersion og serviceUrl. API- og IAM-endepunktet forblir de tiltenkte målene; proxy-lytteren tilhører agenten. listen over HTTP-proxyer kan skaffe kandidatadresser når begge de offentlige tjenesteendepunktene kan nås via en proxy du velger.
tunnel.httpsOverHttp oppretter HTTPS-veien gjennom HTTP-proxyen. proxy: false forhindrer at SDK-en legger på en annen innebygd proxykonfigurasjon oppå den egendefinerte agenten.
Hvis du tidligere bare ga disse innstillingene til assistant, er autentiseringskomponenten det manglende stedet som bør undersøkes. Grunnleggende autentisering og et allerede utstedt bærertoken har forskjellige livssykluser for tokenhenting, så denne ekstra IAM-veien gjelder for den nettverksbaserte autentiseringskomponenten som brukes her.