Proxyindstillinger i Watson Node SDK til API- og IAM-anmodninger
Del tunnelagenten mellem Watson-tjenesteklienten og dens IAM-autentifikator, så tokenhentning kan bruge proxyen.
Når et Watson-kald fejler, før det når tjenesten, skal du kontrollere, om den fejlede anmodning er IAM-tokenanmodningen. Et IAM-godkendt kald kan kontakte IAM først og tjenesten bagefter.
I et program, der allerede bruger det relevante Watson SDK og afhængigheden tunnel, skal du give begge objekter de samme netværksindstillinger:
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-endepunkterne forbliver deres tilsigtede destinationer; proxylytteren hører til i agenten. HTTP-proxylisten kan give kandidatadresser, når begge offentlige tjenesteslutpunkter kan nås gennem en proxy, du vælger.
tunnel.httpsOverHttp etablerer HTTPS-stien gennem HTTP-proxyen. proxy: false forhindrer SDK'en i at anvende en anden indbygget proxykonfiguration oven på den brugerdefinerede agent.
Hvis du tidligere kun gav disse indstillinger til assistant, er autentifikatoren det manglende sted at undersøge. Basisgodkendelse og et allerede udstedt bearer-token har forskellige livscyklusser for tokenhentning, så denne ekstra IAM-sti gælder for den netværksbaserede autentifikator, der bruges her.