Când un apel Watson eșuează înainte de a ajunge la serviciu, verificați dacă cererea eșuată este cererea de token IAM. Un apel autentificat cu IAM poate contacta mai întâi IAM și apoi serviciul.

Într-o aplicație care folosește deja SDK-ul Watson respectiv și dependența tunnel, furnizați aceleași setări de rețea ambelor obiecte:

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,
});

Păstrați apiKey, serviceVersion și serviceUrl existente ale aplicației. Endpointul API și cel IAM rămân destinațiile dorite; listenerul de proxy aparține agentului. lista de proxy-uri HTTP poate furniza adrese candidate atunci când ambele endpointuri publice ale serviciului pot fi atinse printr-un proxy ales de dumneavoastră.

tunnel.httpsOverHttp stabilește calea HTTPS prin proxy-ul HTTP. proxy: false împiedică SDK-ul să aplice o altă configurație de proxy încorporată peste acel agent personalizat.

Dacă anterior ați furnizat aceste setări doar către assistant, autentificatorul este locul lipsă de verificat. Autentificarea de bază și un token bearer deja emis au cicluri diferite de obținere a tokenului, așa că această cale IAM suplimentară se aplică autentificatorului bazat pe rețea folosit aici.

Articole similare