Quando una chiamata Watson non riesce prima di raggiungere il servizio, verifica se la richiesta non riuscita è la richiesta del token IAM. Una chiamata autenticata tramite IAM può contattare prima IAM e poi il servizio.

In un'applicazione che usa già il Watson SDK pertinente e la dipendenza tunnel, assegna le stesse impostazioni di rete a entrambi gli oggetti:

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

Mantieni i valori esistenti di apiKey, serviceVersion e serviceUrl dell'applicazione. Gli endpoint API e IAM restano le destinazioni previste; il listener del proxy appartiene all'agente. L'elenco dei proxy HTTP può fornire indirizzi candidati quando è possibile raggiungere entrambi gli endpoint pubblici del servizio tramite un proxy che scegli.

tunnel.httpsOverHttp stabilisce il percorso HTTPS attraverso il proxy HTTP. proxy: false impedisce all'SDK di applicare un'altra configurazione proxy integrata sopra quell'agente personalizzato.

Se in precedenza fornivi queste impostazioni solo a assistant, l'autenticatore è il punto mancante da controllare. L'autenticazione di base e un token bearer già emesso hanno cicli di vita diversi per l'ottenimento del token, quindi questo percorso IAM aggiuntivo vale per l'autenticatore basato sulla rete usato qui.

Articoli correlati