Proxy-instellingen voor Watson Node SDK voor API- en IAM-verzoeken
Deel de tunnelagent tussen de Watson-serviceclient en de IAM-authenticator, zodat het ophalen van tokens de proxy kan gebruiken.
Wanneer een Watson-aanroep mislukt voordat de service wordt bereikt, controleer dan of het mislukte verzoek het IAM-tokenverzoek is. Een met IAM geauthenticeerde aanroep kan eerst IAM contacteren en daarna de service.
Geef in een applicatie die de betreffende Watson SDK en de tunnel-afhankelijkheid al gebruikt, dezelfde netwerkinstellingen aan beide objecten:
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,
});Behoud de bestaande apiKey, serviceVersion en serviceUrl van de applicatie. Het API- en IAM-eindpunt blijven hun bedoelde bestemmingen; de proxylistener hoort bij de agent. lijst met HTTP-proxy’s kan kandidaatadressen leveren wanneer beide openbare service-eindpunten bereikbaar zijn via een proxy die u kiest.
tunnel.httpsOverHttp legt het HTTPS-pad via de HTTP-proxy aan. proxy: false voorkomt dat de SDK nog een ingebouwde proxyconfiguratie bovenop die aangepaste agent toepast.
Als u deze instellingen eerder alleen aan assistant gaf, is de authenticator de ontbrekende plek om te controleren. Basisauthenticatie en een al uitgegeven bearer-token hebben verschillende levenscycli voor het verkrijgen van tokens, dus dit extra IAM-pad geldt voor de netwerkgebaseerde authenticator die hier wordt gebruikt.