Salesforce CLI prisijungimo klaidos pranešamos kaip viena problema, o paprastai jų būna trys. CLI procesas veikia kažkur, naršyklė, kuri užbaigia žiniatinklio srautą, veikia kažkur, o vėlesnis API kvietimas veikia kažkur, ir tie trys taškai neturi bendrinti maršruto, sprendėjo ar leidžiamų sąrašo. Jų palyginimas yra greičiausias būdas sužinoti, kurią iš jų tunelis iš tikrųjų blokuoja. Niekas prisijungimo išvestyje nenurodo, kuri iš trijų nepavyko.

Trys hostai, viena prisijungimo istorija

Žiniatinklio prisijungimo srautas tapatybės veiksmą perduoda naršyklei, ir ta naršyklė dažnai būna nešiojamajame kompiuteryje, o CLI yra nuotoliniame kūrimo hoste arba konteineryje. Nešiojamasis turi VPN klientą, nuotolinis hostas turi tai, ką jam davė platformos komanda, ir nė viena iš šių sąrankų automatiškai neapima kitos. VPN piktograma būsenos juostoje nieko nesako apie hostą, kuriame klientas niekada nebuvo paleistas.

Po prisijungimo CLI siunčia savo API užklausas iš ten, kur gyvena procesas. Toms užklausoms reikia DNS, maršrutizavimo, TLS pasitikėjimo ir kliento autorizacijos org pusėje, tai keturi atskiri patikrinimai, ir kiekvienas gali nepavykti atskirai. Naršyklė, kuri gražiai prisijungė, nieko nepasako apie nė vieną iš jų.

Laikykite abi puses vienoje laiko juostoje, bet vertinkite jas atskirai. Tada vienas bilietas gali pasakyti, kuri pusė sugedo, nepaverčiant to ginču dėl nuosavybės.

Orgo įrašą imkite iš orgo, ne iš atminties

Žiniatinklio srautas paima egzemplioriaus URL ir išsaugo rezultatą po slapyvardžiu, ir abi vertės turėtų ateiti iš orgo savininko, o ne iš kolegos terminalo istorijos. Sandbox hostas, nukopijuotas iš seno bilieto, yra dažna priežastis prisijungimo, kuris autentifikuojasi prieš neteisingą orgą ir po to nepavyksta kiekvienoje užklausoje.

Naudokite formą, kurią dokumentuoja įdiegtas papildinys, su savo patvirtintu hostu ir slapyvardžiu. Ta dokumentacija yra nuoroda vėliavėlėms, kurios pasikeitė tarp sfdx ir dabartinio CLI.

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

Aukščiau nurodytas hosto pavadinimas ir slapyvardis yra pavyzdžiai, o ne numatytosios reikšmės, kurias turėtumėte kopijuoti. Atlikite įprastus naršyklės tapatybės ir MFA veiksmus, o ne apeikite juos scenarijumi, ir niekada nedėkite slaptažodžio, sesijos identifikatoriaus ar autentifikatoriaus sėklos į apvalkalo komandą, kad praleistumėte raginimą.

Ką įrodo talpykloje esanti autorizacija

Slapyvardis, kuris pasirodo vietiniame autorizacijos sąraše, įrodo, kad prisijungimas kadaise pavyko tame kompiuteryje. Sąrašas skaitomas iš vietinės saugyklos ir nesusisiekia su orgu, kad patvirtintų, jog žetonas vis dar veikia, todėl sveikai atrodantis įrašas ir atmestas API kvietimas gali būti abu teisingi. Talpyklą laikykite praeities įrašu, o ne gyvo ryšio testu. Talpyklos patikrinimas atsako į pagalbos klausimą, bet niekada neuždaro ryšio tyrimo.

Tas pats skirtumas galioja naršyklės sesijai. Skirtukas, kuris vis dar rodo orgą, nereiškia, kad išsaugotas CLI žetonas atitinka dabartinę politiką, nes žetono galiojimas, IP apribojimai ir kliento programos taisyklės taikomi API ribose.

Perskaitykite vietinį įrašą prieš jį ištrindami, nes slapyvardis ir orgo hostas yra du faktai, kurių paprašys pagalba. Slapyvardžio pašalinimas yra grįžtamas, bet neteisingo pašalinimas incidento viduryje tik prideda antrą problemą.

Kur API užklausa iš tikrųjų atmetama

Sekite vieną užklausą nuo pradžios iki pabaigos ir pastebėkite, kuris komponentas atsako. TLS klaida įvardija kitą problemą nei 403, kuri įvardija kitą problemą nei skirtasis laikas, ir skirtasis laikas yra vienintelis iš trijų, kuris nurodo tunelį kaip pirmą įtariamąjį. Klaidos klasės skaitymas prieš pranešimą sutaupo daug spėliojimų. Užsirašykite klasę prieš ką nors paleisdami dar kartą.

Šaltinio adreso apribojimai yra atvejis, kai prisijungimas veikia, o užklausa ne, nes naršyklės srautas ir API kvietimas gali išeiti skirtingais adresais. Tai taisyti platesniu leidžiamų sąrašu yra orgo savininko sprendimas, o ne patogumas, ir tai turėtų būti mažiausias diapazonas, apimantis hostą.

Užfiksuokite nepavykusią komandą, slapyvardį, vykdymo hostą ir laiko žymą, o žetoną palikite už visko, ką įklijuojate į bilietą. Ta keturių eilučių santrauka yra tai, ko orgo savininkui reikia savo pusei patikrinti.

Patikrinkite srautą iš hosto, kuris jį naudos

Testuokite iš kompiuterio, kuris vykdys darbo krūvį. Prisijungimas, patvirtintas nešiojamajame, nieko nesako apie build agentą kitoje tinklo zonoje, ir skirtumas yra būtent tai, ką bandote rasti.

Patikrinimui naudokite nekenksmingą leistiną skaitymą, o jei nepavyks, pasilikite pirmąją klaidą.

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

Kai prisijungimas pavyksta, bet užklausa nepavyksta, likę kandidatai yra DNS, maršrutizavimas, TLS perėmimas ir kliento politika org pusėje, ir kiekvienas turi savo savininką. Kai nepavyksta pats prisijungimas, naršyklė ir CLI tikriausiai nėra tame pačiame hoste, o pataisymas priklauso sąrankai tarp jų, o ne tuneliui. Automatizavimas gauna dar vieną taisyklę: nepriežiūrimai užduočiai reikia patvirtinto sertifikatu pagrįsto prisijungimo, nes talpykloje esanti interaktyvi sesija, nukopijuota į darbininką, nėra tapatybės dizainas.

Susiję straipsniai