Proxyinställningar i Watson Node SDK för API- och IAM-förfrågningar
Dela tunnelagenten mellan Watson-tjänstklienten och dess IAM-autentiserare så att tokenhämtningen kan använda proxyn.
När ett Watson-anrop misslyckas innan det når tjänsten, kontrollera om den misslyckade begäran är IAM-tokenbegäran. Ett IAM-autentiserat anrop kan kontakta IAM först och tjänsten sedan.
I ett program som redan använder rätt Watson SDK och beroendet tunnel, ge samma nätverksinställningar till båda objekten:
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,
});Behåll programmets befintliga apiKey, serviceVersion och serviceUrl. API- och IAM-slutpunkterna förblir deras avsedda mål; proxy-lyssnaren hör till agenten. listan med HTTP-proxyer kan ge kandidatadresser när båda de offentliga tjänsteslutpunkterna kan nås via en proxy du väljer.
tunnel.httpsOverHttp upprättar HTTPS-vägen genom HTTP-proxyn. proxy: false hindrar SDK:n från att lägga på ytterligare en inbyggd proxykonfiguration ovanpå den anpassade agenten.
Om du tidigare bara gav dessa inställningar till assistant, är autentiseraren den saknade platsen att kontrollera. Grundläggande autentisering och en redan utfärdad bearer-token har olika livscykler för tokenhämtning, så den här extra IAM-vägen gäller för den nätverksbaserade autentiserare som används här.