การตั้งค่าพร็อกซีใน Watson Node SDK สำหรับคำขอ API และ IAM
แชร์เอเจนต์อุโมงค์ระหว่างไคลเอนต์บริการ Watson และ IAM authenticator ของมัน เพื่อให้การรับโทเคนใช้พร็อกซีได้
เมื่อการเรียก Watson ล้มเหลวก่อนถึงบริการ ให้ตรวจสอบว่าคำขอที่ล้มเหลวคือคำขอโทเคน IAM หรือไม่ การเรียกที่ยืนยันตัวตนด้วย IAM สามารถติดต่อ IAM ก่อน แล้วจึงติดต่อบริการ
ในแอปพลิเคชันที่ใช้ Watson SDK ที่เกี่ยวข้องและ dependency 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 สร้างเส้นทาง HTTPS ผ่านพร็อกซี HTTP proxy: false ป้องกันไม่ให้ SDK ใช้การกำหนดค่าพร็อกซีในตัวอีกชุดซ้อนบนเอเจนต์ที่กำหนดเองนั้น
หากก่อนหน้านี้คุณให้การตั้งค่าเหล่านี้กับ assistant เท่านั้น authenticator คือจุดที่ขาดหายไปซึ่งต้องตรวจสอบ การยืนยันตัวตนแบบพื้นฐานและ bearer โทเคนที่ออกให้แล้วมีวงจรการรับโทเคนที่ต่างกัน ดังนั้นเส้นทาง IAM เพิ่มเติมนี้จึงใช้กับ authenticator ที่อิงเครือข่ายซึ่งใช้ที่นี่