407 bak bedriftens VPN-proxy: npm, Maven og VS Code
En 407 betyr at proxyen vil ha påloggingsinformasjon, ikke at registeret er nede. Konfigurer npm, Maven, VS Code og containere, og unnta interne verter.
At intranettsiden åpnes i nettleseren beviser bare at proxyen virker for nettleseren, ikke for npm eller Maven. Hver klient leser sin egen konfigurasjon, og et nettverk som bare nås via VPN legger til et andre spørsmål: om klienten i det hele tatt når proxyen. Start med statuskoden, og følg deretter konfigurasjonskjeden til verktøyet som feilet. Derfor virker én klient mens naboen feiler.
Hva en 407 faktisk beviser
En 407 Proxy Authentication Required kommer fra proxyen, ikke fra registeret eller repositoriet. Klienten nådde proxyen, og proxyen avviste forespørselen, vanligvis fordi påloggingsinformasjonen manglet, var feil formatert eller ikke ble godtatt for det målet.
En tidsavbrudd forteller noe annet: feil proxyadresse, ingen rute til proxyen før tunnelen er oppe, eller en omgåelsesoppføring som mangler for en intern vert. Les feilteksten før du endrer påloggingsinformasjonen.
Bekreft vert, port, autentiseringsmetode og om brukernavnet trenger et domeneprefiks. Sjekk deretter om verktøyet leser verdien fra en fil, en miljøvariabel eller begge. Et domenekvalifisert brukernavn er en vanlig årsak til 407, og det samme er et passord lagret med feil koding.
npm leser sin egen konfigurasjonskjede
npm godtar nøklene proxy og https-proxy i en .npmrc for brukeren eller prosjektet. Oppgi skjemaet, fordi verdiene er URL-er, og URL-kod reserverte tegn i passordet slik at en at-tegn ikke deler verdien.
proxy=http://proxy.example.com:8080
https-proxy=http://proxy.example.com:8080
strict-ssl=true
Med npm config list ser du hvilken fil som ga hver effektive verdi. En shell-eksport som npm_config_proxy kan overstyre filen, og en prosjekt-.npmrc med et personlig passord bør aldri committes. Skriv ut kildebanen sammen med verdien.
La strict-ssl være slått på. En proxy som inspiserer TLS kan kreve bedriftens CA i tillitslageret; å slå av verifiseringen for å komme forbi feilen skjuler det egentlige tillitsproblemet.
Maven skiller proxyer fra speil
Maven leser proxyer og speil fra brukerens innstillingsfil, ikke fra prosjektets pom. Legg nettverksspesifikke proxyer og speil for det interne repositoriet i ~/.m2/settings.xml, og la offentlige repositoriumserklæringer bli i prosjektet.
Proxyblokken trenger en id, et aktiv-flagg, protokollen, vert og port, samt en nonProxyHosts-oppføring for det interne repositoriet. Hold feltene i brukerens innstillingsfil, ikke i pom, slik at en nettverksendring ikke skriver om hele teamets build.
Legg det interne repositoriet til i nonProxyHosts slik at Maven kobler direkte. Uten oppføringen blir proxyen et unødvendig stopp, og feilen ser ut som et repositoriebrudd. En speiloppføring peker på det interne repositoriet og erstatter ikke proxyinnstillingen.
Utviklere som flytter mellom nettverk, kan holde én innstillingsfil per nettverk og velge riktig kopi når shellen starter. Å redigere én fil manuelt ved hver overgang gjør en fungerende bærbar PC til en støttesak.
VS Code og dev-containere har ulike navnerom
VS Code leser http.proxy fra bruker- eller arbeidsområdeinnstillinger, inkludert skjema og port. Det dekker editorens egne utvidelses- og markedsføringsforespørsler, men konfigurerer ikke en terminal eller en container som startes fra editoren. Kontroller innstillingens omfang og verdien. En arbeidsområdeinnstilling kan overstyre brukerinnstillingen for ett prosjekt.
En dev-container har sitt eget nettverksnavnerom. Den arver ikke vertens proxyvariabler eller VPN-rute, og derfor kan et markedsanrop i containeren feile mens det samme anropet virker på verten.
Gi containeren disse variablene, eller gi den sin egen resolver og rute. Når navn løses inni, men proxyen aldri svarer, mangler vanligvis ruten, ikke adressen.
Omgåelseslister og miljøets forrang
Legg VPN-gatewayen, interne registre og private DNS-suffikser til omgåelseslisten. Hvis klienten prøver å nå gatewayen gjennom proxyen før tunnelen finnes, feiler tilkoblingen slik at det ser ut som et proxybrudd. Test det med tunnelen nede.
Miljøvariabler og filer kan være uenige. Kjør verktøyets egen konfigurasjonsdump, ikke shellens, og sammenlign verdiene. En duplikatvariabel med små bokstaver, en gammel verdi i en overordnet shell eller en prosjektfil kan slå den innstillingen du nettopp endret.
I CI sender du proxyen som en hemmelig variabel og tester én pakkeinstallasjon i det samme imaget. En 407 i en container betyr ofte at variabelen rett og slett mangler der, mens vertens shell har den.
Noter proxyvert, port, omgåelsessuffikser og filen eller variabelen som gir dem, for hvert verktøy. Når én klient returnerer 407 og en annen virker, gjør notatet sammenligningen av fire ulike konfigurasjoner til en kort sjekk.