Nastavení proxy ve Watson Node SDK pro požadavky API a IAM
Sdílejte tunelový agent mezi klientem služby Watson a jeho autentizátorem IAM, aby získávání tokenu mohlo využívat proxy.
Když volání Watsonu selže dřív, než dorazí do služby, zkontrolujte, zda neúspěšný požadavek není požadavek na token IAM. Volání autentizované přes IAM může nejprve kontaktovat IAM a teprve potom službu.
V aplikaci, která už používá příslušnou sadu Watson SDK a závislost tunnel, předejte oběma objektům stejné síťové nastavení:
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,
});Zachovejte stávající apiKey, serviceVersion a serviceUrl aplikace. Koncové body API a IAM zůstávají svými zamýšlenými cíli; naslouchající proxy patří do agenta. Seznam HTTP proxy může nabídnout kandidátní adresy, když lze k oběma veřejným koncovým bodům služby přistupovat přes proxy, kterou zvolíte.
tunnel.httpsOverHttp vytváří cestu HTTPS přes HTTP proxy. proxy: false brání sadě SDK v tom, aby na tohoto vlastního agenta aplikovala další vestavěnou konfiguraci proxy.
Pokud jste tato nastavení dříve předávali jen objektu assistant, chybějícím místem ke kontrole je autentizátor. Základní ověřování a již vydaný bearer token mají odlišné životní cykly získávání tokenu, takže tato dodatečná cesta IAM platí pro síťový autentizátor použitý zde.