API 및 IAM 요청을 위한 Watson Node SDK 프록시 설정
터널 에이전트를 Watson 서비스 클라이언트와 그 IAM 인증기 사이에 공유하여 토큰 획득이 프록시를 사용할 수 있게 합니다.
Watson 호출이 서비스에 도달하기 전에 실패하면 실패한 요청이 IAM 토큰 요청인지 확인합니다. IAM으로 인증된 호출은 먼저 IAM에, 다음으로 서비스에 연결할 수 있습니다.
해당 Watson SDK와 tunnel 의존성을 이미 사용하는 애플리케이션에서는 두 객체에 동일한 네트워크 설정을 제공합니다.
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,
});애플리케이션의 기존 apiKey, serviceVersion, serviceUrl 값은 그대로 유지합니다. API와 IAM 엔드포인트는 원래 목적지로 남고, 프록시 리스너는 에이전트 안에 둡니다. HTTP 프록시 목록은 두 공개 서비스 엔드포인트에 선택한 프록시를 통해 접근할 수 있을 때 후보 주소를 제공할 수 있습니다.
tunnel.httpsOverHttp는 HTTP 프록시를 통한 HTTPS 경로를 수립합니다. proxy: false는 SDK가 그 사용자 지정 에이전트 위에 또 다른 내장 프록시 구성을 적용하지 않도록 합니다.
이전에 이 설정을 assistant에만 전달했다면 인증기가 확인해야 할 빠진 지점입니다. 기본 인증과 이미 발급된 bearer 토큰은 토큰 획득 수명 주기가 다르므로, 이 추가 IAM 경로는 여기에서 사용하는 네트워크 기반 인증기에 해당합니다.