Οι αποτυχίες σύνδεσης στο Salesforce CLI αναφέρονται ως ένα πρόβλημα και συνήθως είναι τρεις. Η διεργασία CLI εκτελείται κάπου, το πρόγραμμα περιήγησης που ολοκληρώνει τη ροή ιστού εκτελείται κάπου, και η μεταγενέστερη κλήση API εκτελείται κάπου, και αυτά τα τρία σημεία δεν χρειάζεται να μοιράζονται διαδρομή, αναλυτή ή λίστα επιτρεπόμενων. Η σύγκρισή τους είναι ο ταχύτερος τρόπος να βρείτε ποιο μπλοκάρει πραγματικά η σήραγγα. Τίποτα στην έξοδο σύνδεσης δεν ονομάζει ποιο από τα τρία απέτυχε.

Τρεις κεντρικοί υπολογιστές, μία ιστορία σύνδεσης

Η ροή σύνδεσης ιστού παραδίδει το βήμα ταυτότητας σε ένα πρόγραμμα περιήγησης, και αυτό το πρόγραμμα είναι συχνά στο φορητό σας, ενώ το CLI βρίσκεται σε απομακρυσμένο κεντρικό υπολογιστή ανάπτυξης ή σε κοντέινερ. Το φορητό έχει τον πελάτη VPN, ο απομακρυσμένος έχει ό,τι του έδωσε η ομάδα πλατφόρμας, και καμία από τις δύο ρυθμίσεις δεν καλύπτει αυτόματα την άλλη. Ένα εικονίδιο VPN στη γραμμή κατάστασης δεν λέει τίποτα για κεντρικό υπολογιστή που δεν έτρεξε ποτέ τον πελάτη.

Μετά τη σύνδεση, το CLI κάνει τις δικές του αιτήσεις API από όπου ζει η διεργασία. Αυτές οι αιτήσεις χρειάζονται DNS, δρομολόγηση, εμπιστοσύνη TLS και εξουσιοδότηση πελάτη από την πλευρά του οργανισμού, που είναι τέσσερις ξεχωριστοί έλεγχοι και καθένας μπορεί να αποτύχει μόνος του. Ένα πρόγραμμα περιήγησης που συνδέθηκε όμορφα δεν σας λέει τίποτα για κανέναν από αυτούς.

Κρατήστε και τα δύο μισά σε ένα χρονοδιάγραμμα, αλλά βαθμολογήστε τα χωριστά. Ένα μόνο δελτίο μπορεί τότε να πει ποιο μισό έσπασε χωρίς να το μετατρέψει σε διαφωνία για την κυριότητα.

Πάρτε την καταχώριση του οργανισμού από τον οργανισμό, όχι από τη μνήμη

Η ροή ιστού παίρνει ένα URL παρουσίας και αποθηκεύει το αποτέλεσμα κάτω από ένα ψευδώνυμο, και οι δύο τιμές πρέπει να προέρχονται από τον ιδιοκτήτη του οργανισμού και όχι από το ιστορικό τερματικού ενός συναδέλφου. Ένας κεντρικός υπολογιστής sandbox αντιγραμμένος από παλιό δελτίο είναι κοινή αιτία σύνδεσης που πιστοποιείται στον λάθος οργανισμό και μετά αποτυγχάνει σε κάθε ερώτημα.

Χρησιμοποιήστε τη μορφή που τεκμηριώνει το εγκατεστημένο πρόσθετο, με τον δικό σας εγκεκριμένο κεντρικό υπολογιστή και ψευδώνυμο. Αυτή η τεκμηρίωση είναι η αναφορά για σημαίες που άλλαξαν μεταξύ sfdx και του τρέχοντος CLI.

sf org login web --instance-url https://acme--uat.sandbox.my.salesforce.com --alias uat
sf org display --target-org uat

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

Τι αποδεικνύει η αποθηκευμένη εξουσιοδότηση

Ένα ψευδώνυμο που εμφανίζεται στην τοπική λίστα εξουσιοδότησης αποδεικνύει ότι μια σύνδεση πέτυχε κάποτε σε εκείνο το μηχάνημα. Η λίστα διαβάζεται από τοπική αποθήκευση και δεν επικοινωνεί με τον οργανισμό για να επιβεβαιώσει ότι το διακριτικό λειτουργεί ακόμα, οπότε μια καταχώριση που φαίνεται υγιής και μια απορριφθείσα κλήση API μπορούν να είναι και οι δύο αληθείς. Αντιμετωπίστε την προσωρινή μνήμη ως αρχείο του παρελθόντος, όχι ως ζωντανό τεστ συνδεσιμότητας. Ένας έλεγχος προσωρινής μνήμης απαντά σε ερώτηση υποστήριξης, αλλά ποτέ δεν κλείνει μια έρευνα συνδεσιμότητας.

Η ίδια διάκριση ισχύει για τη συνεδρία του προγράμματος περιήγησης. Μια καρτέλα που εξακολουθεί να δείχνει τον οργανισμό δεν σημαίνει ότι το αποθηκευμένο διακριτικό του CLI ταιριάζει με την τρέχουσα πολιτική, επειδή η διάρκεια του διακριτικού, οι περιορισμοί IP και οι κανόνες της εφαρμογής πελάτη επιβάλλονται στο όριο του API.

Διαβάστε την τοπική εγγραφή πριν τη διαγράψετε, αφού το ψευδώνυμο και ο κεντρικός υπολογιστής του οργανισμού είναι τα δύο γεγονότα που θα ζητήσει η υποστήριξη. Η αφαίρεση ψευδώνυμου είναι αναστρέψιμη, αλλά η αφαίρεση του λάθος στη μέση ενός περιστατικού απλώς προσθέτει δεύτερο πρόβλημα.

Πού απορρίπτεται πραγματικά η αίτηση API

Ακολουθήστε ένα αίτημα από άκρη σε άκρη και σημειώστε ποιο στοιχείο απαντά. Μια αποτυχία TLS ονομάζει διαφορετικό πρόβλημα από ένα 403, το οποίο ονομάζει διαφορετικό πρόβλημα από ένα χρονικό όριο, και το χρονικό όριο είναι το μόνο από τα τρία που δείχνει τη σήραγγα ως πρώτο ύποπτο. Η ανάγνωση της κλάσης σφάλματος πριν από το μήνυμα εξοικονομεί πολλή εικασία. Γράψτε την κλάση πριν ξανατρέξετε οτιδήποτε.

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

Καταγράψτε την εντολή που αποτυγχάνει, το ψευδώνυμο, τον κεντρικό υπολογιστή εκτέλεσης και τη χρονική σήμανση, και αφήστε το διακριτικό έξω από ό,τι επικολλήσετε στο δελτίο. Αυτή η σύνοψη τεσσάρων γραμμών είναι ό,τι χρειάζεται ο ιδιοκτήτης του οργανισμού για να ελέγξει την πλευρά του.

Ελέγξτε τη ροή από τον κεντρικό υπολογιστή που θα τη χρησιμοποιήσει

Δοκιμάστε από το μηχάνημα που θα εκτελέσει το φόρτο εργασίας. Μια σύνδεση που επαληθεύτηκε στο φορητό σας δεν λέει τίποτα για έναν πράκτορα δόμησης σε άλλη ζώνη δικτύου, και η διαφορά είναι ακριβώς αυτό που προσπαθείτε να βρείτε.

Χρησιμοποιήστε μια αβλαβή εξουσιοδοτημένη ανάγνωση για τον έλεγχο, και κρατήστε το πρώτο σφάλμα αν αποτύχει.

sf org list auth
sf org display --target-org uat
sf data query --target-org uat --query "select Id, Name from Organization"

Όταν η σύνδεση πετυχαίνει αλλά το ερώτημα αποτυγχάνει, οι υπόλοιποι υποψήφιοι είναι DNS, δρομολόγηση, αναχαίτιση TLS και πολιτική πελάτη από την πλευρά του οργανισμού, και ο καθένας έχει τον δικό του ιδιοκτήτη. Όταν αποτυγχάνει η ίδια η σύνδεση, το πρόγραμμα περιήγησης και το CLI πιθανότατα δεν είναι στον ίδιο κεντρικό υπολογιστή, και η διόρθωση ανήκει στη ρύθμιση μεταξύ τους παρά στη σήραγγα. Ο αυτοματισμός παίρνει έναν ακόμη κανόνα: μια εργασία χωρίς επίβλεψη χρειάζεται εγκεκριμένη σύνδεση βάσει πιστοποιητικού, επειδή μια αποθηκευμένη διαδραστική συνεδρία αντιγραμμένη σε εργάτη δεν είναι σχεδιασμός ταυτότητας.

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