Configuración de proxy de Watson Node SDK para solicitudes de API e IAM
Comparta el agente de túnel entre el cliente del servicio Watson y su autenticador de IAM para que la obtención del token pueda usar el proxy.
Cuando una llamada de Watson falla antes de llegar al servicio, compruebe si la solicitud fallida es la solicitud del token de IAM. Una llamada autenticada con IAM puede contactar primero con IAM y después con el servicio.
En una aplicación que ya utilice el SDK de Watson correspondiente y la dependencia tunnel, proporcione la misma configuración de red a ambos objetos:
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,
});Conserve el apiKey, el serviceVersion y el serviceUrl existentes de la aplicación. Los puntos de conexión de API e IAM siguen siendo sus destinos previstos; el receptor del proxy pertenece al agente. La lista de proxies HTTP puede aportar direcciones candidatas cuando se pueda llegar a los dos puntos de conexión públicos del servicio a través de un proxy que usted elija.
tunnel.httpsOverHttp establece la ruta HTTPS a través del proxy HTTP. proxy: false impide que el SDK aplique otra configuración de proxy integrada sobre ese agente personalizado.
Si antes solo proporcionaba esta configuración a assistant, el autenticador es el lugar que falta por revisar. La autenticación básica y un token de portador ya emitido tienen ciclos de vida distintos para obtener el token, así que esta ruta adicional de IAM se aplica al autenticador basado en red que se usa aquí.