Όταν μια κλήση 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 δημιουργεί τη διαδρομή HTTPS μέσω του διαμεσολαβητή HTTP. Το proxy: false εμποδίζει το SDK να εφαρμόσει άλλη ενσωματωμένη ρύθμιση διαμεσολαβητή πάνω σε αυτόν τον προσαρμοσμένο πράκτορα.

Αν στο παρελθόν δίνατε αυτές τις ρυθμίσεις μόνο στο assistant, ο ελεγκτής ταυτότητας είναι το σημείο που λείπει. Ο βασικός έλεγχος ταυτότητας και ένα ήδη εκδοθέν διακριτικό bearer έχουν διαφορετικούς κύκλους ζωής απόκτησης διακριτικού, επομένως αυτή η πρόσθετη διαδρομή IAM αφορά τον ελεγκτή ταυτότητας δικτύου που χρησιμοποιείται εδώ.

Σχετικά άρθρα