407 a vállalati VPN-proxy mögött: npm, Maven és VS Code
A 407 azt jelenti, hogy a proxy hitelesítő adatokat kér, nem azt, hogy a regiszter leállt. Állítsa be az npm-et, a Mavent, a VS Code-ot és a konténereket, a belső hosztokat pedig zárja ki.
Az intranetes oldal megnyílása a böngészőben csak azt bizonyítja, hogy a proxy a böngészőnek működik, nem az npm-nek vagy a Mavennek. Minden kliens a saját konfigurációját olvassa, és a csak VPN-en át elérhető hálózat második kérdést tesz fel: eléri-e a kliens egyáltalán a proxyt. Kezdje a státuszkóddal, majd kövesse a meghiúsult eszköz konfigurációs láncát. Ezért működik az egyik kliens, a szomszédja pedig nem.
Amit a 407 valójában bizonyít
A 407 Proxy Authentication Required a proxytól jön, nem a regisztrációs adatbázistól vagy a tárolótól. A kliens elérte a proxyt, és a proxy elutasította a kérést, többnyire mert a hitelesítő adatok hiányoztak, hibás formátumúak voltak, vagy nem fogadták el őket arra a célra.
Az időtúllépés másról beszél: rossz proxycím, nincs útvonal a proxyhoz az alagút felépülése előtt, vagy hiányzik egy megkerülési bejegyzés egy belső hoszt számára. Olvassa el a hiba szövegét, mielőtt módosítja a hitelesítő adatokat.
Ellenőrizze a proxy hosztját, portját, a hitelesítési sémát, és hogy a felhasználónévnek kell-e tartomány-előtag. Utána nézze meg, hogy a hibázó eszköz fájlból, környezeti változóból vagy mindkettőből olvassa-e az értéket. A tartományos felhasználónév gyakori 407-es ok, akárcsak a rossz kódolással mentett jelszó.
Az npm a saját konfigurációs láncát olvassa
Az npm elfogadja a proxy és https-proxy kulcsokat egy felhasználói vagy projekt .npmrc fájlban. Adja meg a sémát, mert az értékek URL-ek, és kódolja a jelszó fenntartott karaktereit, hogy az at jel ne ossza fel az értéket.
proxy=http://proxy.example.com:8080
https-proxy=http://proxy.example.com:8080
strict-ssl=true
A npm config list segítségével láthatja, melyik fájl adta az egyes effektív értékeket. Egy shell-export, például a npm_config_proxy felülírhatja a fájlt, és a személyes jelszót tartalmazó projekt .npmrc soha nem kerülhet commitba. Írja ki a forrás útvonalát az értékkel együtt.
Hagyja bekapcsolva a strict-ssl beállítást. A TLS-t vizsgáló proxy megkövetelheti a vállalati CA-t a bizalmi tárolóban; az ellenőrzés kikapcsolása a hiba megkerüléséhez elrejti a valódi bizalmi problémát.
A Maven külön kezeli a proxykat és a tükröket
A Maven a proxykat és a tükröket a felhasználói beállításfájlból olvassa, nem a projekt pom fájljából. A hálózati proxykat és a belső tároló tükörbejegyzéseit tegye a ~/.m2/settings.xml fájlba, a nyilvános tárolódeklarációkat pedig hagyja a projektben.
A proxy blokknak id-re, aktív jelzőre, protokollra, hosztra és portra, valamint egy nonProxyHosts bejegyzésre van szüksége a belső tárolóhoz. Tartsa ezeket a mezőket a felhasználói beállításfájlban, ne a pom-ban, hogy egy hálózatváltás ne írja újra az egész csapat buildjét.
Adja hozzá a belső tárolót a nonProxyHosts bejegyzéshez, hogy a Maven közvetlenül kapcsolódjon. E bejegyzés nélkül a proxy felesleges megállóvá válik, és a hiba tárolókiesésnek látszik. A tükörbejegyzés a belső tárolóra mutat, és nem helyettesíti a proxy beállítását.
A hálózatok között mozgó fejlesztők hálózatonként egy beállításfájlt tarthatnak, és a shell indulásakor a megfelelő példányt választhatják. Egyetlen fájl kézi szerkesztése minden váltásnál működő laptopot csinál támogatási jegyből.
A VS Code és a dev konténerek névterei eltérnek
A VS Code a http.proxy beállítást a felhasználói vagy munkaterületi beállításokból olvassa, a sémával és a porttal együtt. Ez lefedi a szerkesztő bővítmény- és piactér-kéréseit, de nem konfigurál terminált vagy a szerkesztőből indított konténert. Ellenőrizze a beállítás hatókörét és az értéket is. Egy munkaterületi beállítás felülírhatja a felhasználóit egy projektre.
A dev konténernek saját hálózati névtere van. Nem örökli a hoszt proxyváltozóit vagy VPN-útvonalát, ezért a piactér-hívás meghiúsulhat a konténerben, miközben ugyanaz a hívás a hoszton működik.
Adja meg ezeket a változókat a konténernek, vagy adjon neki saját feloldót és útvonalat. Ha a nevek belül feloldódnak, de a proxy soha nem válaszol, általában az útvonal hiányzik, nem a cím.
Megkerülési listák és a környezet elsőbbsége
Adja hozzá a VPN-átjárót, a belső regisztereket és a privát DNS-utótagokat a megkerülési listához. Ha a kliens a proxyon át próbálja elérni az átjárót, mielőtt az alagút létezik, a kapcsolat úgy hiúsul meg, hogy proxykiesésnek látszik. Tesztelje ezt leállított alagúttal.
A környezeti változók és a fájlok ellentmondhatnak egymásnak. Futtassa az eszköz saját konfigurációs dumpját, ne a shellét, és hasonlítsa össze az értékeket. Egy kisbetűs duplikált változó, egy elavult érték a szülő shellben vagy egy projektfájl felülírhatja a most szerkesztett beállítást.
A CI-ben adja át a proxyt titkos változóként, és tesztelje egy csomag telepítését ugyanabban az image-ben. A konténeren belüli 407 gyakran azt jelenti, hogy a változó ott egyszerűen hiányzik, miközben a hoszt shelljében megvan.
Jegyezze fel a proxy hosztját, portját, a megkerülési utótagokat és az ezeket adó fájlt vagy változót minden eszköznél. Ha az egyik kliens 407-et ad vissza, a másik pedig működik, ez a feljegyzés négy különböző konfiguráció összehasonlítását rövid ellenőrzéssé alakítja.