407 bak VPN-proxyen til bedriften: npm, Maven og VS Code
En 407 betyr at proxyen ber om innloggingsdata, ikke at registeret ligger nede. Sett opp npm, Maven, VS Code og containere, og unnta interne verter.
Når intranettsiden åpner i nettleseren, viser det bare at proxyen fungerer for nettleseren og ikke for npm eller Maven. Hver klient leser sin egen konfigurasjon, og et nettverk som bare er tilgjengelig over VPN, legger til et nytt spørsmål: kommer klienten i det hele tatt frem til proxyen. Begynn med statuskoden og følg så konfigurasjonskjeden til verktøyet som sviktet. Det er derfor én klient fungerer mens naboens ikke gjør det.
Hva 407 egentlig beviser
407 Proxy Authentication Required kommer fra proxyen og ikke fra registeret eller repositoriet. Klienten nådde frem til proxyen, og proxyen avviste forespørselen, som oftest fordi innloggingsdata manglet, var feil utformet eller ikke ble godtatt for den destinasjonen.
Tidsavbrudd forteller en annen historie: gal 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 innloggingsdata.
Bekreft vert, port, autentiseringsmetode og om brukernavnet trenger et doméneprefiks. Deretter ser du om verktøyet leser verdien fra en fil, en miljøvariabel eller begge. Et doménebasert brukernavn er en vanlig årsak til 407, og det samme er et passord som er lagret med feil tegnkoding.
npm leser sin egen konfigurasjonskjede
npm godtar nøklene proxy og https-proxy i en .npmrc for brukeren eller prosjektet. Ta med skjemaet, siden verdiene er URL-er, og URL-kod reserverte tegn i passordet slik at en alfakrøll 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 stå på. En proxy som inspiserer TLS kan kreve bedriftens CA i tillitslageret; slår du av verifiseringen for å komme rundt feilen, skjuler du det virkelige tillitsproblemet.
Maven holder proxyer og speil fra hverandre
Maven leser proxyer og speil fra brukerens innstillingsfil og 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, og en nonProxyHosts-oppføring for det interne repositoriet. Ha disse feltene i brukerens innstillingsfil og ikke i pom, slik at en nettverksendring ikke skriver om bygget for hele teamet.
Føy det interne repositoriet til nonProxyHosts slik at Maven kobler seg direkte på. Uten oppføringen blir proxyen et unødvendig stopp, og feilen ser ut som et repositoriebrudd. En speiloppføring peker mot det interne repositoriet og erstatter ikke proxyinnstillingen.
Utviklere som beveger seg mellom nettverk, kan holde én innstillingsfil per nettverk og velge riktig kopi når skallet starter. Å redigere én fil for hånd ved hver overgang gjør en fungerende bærbar PC om til en støttesak.
VS Code og dev-containere har forskjellige navnerom
VS Code leser http.proxy fra bruker- eller arbeidsområdeinnstillinger, med skjema og port. Det dekker editorens egne forespørsler til utvidelser og markedsplassen, men setter ikke opp en terminal eller en container som startes fra editoren. Kontroller både omfanget av innstillingen og verdien. En arbeidsområdeinnstilling kan overstyre brukerinnstillingen for ett prosjekt.
En dev-container har sitt eget nettverksnavnerom. Den arver ikke proxyvariablene eller VPN-ruten til verten, og derfor kan et kall til markedsplassen feile inne i containeren mens det samme kallet virker på verten.
Gi containeren disse variablene, eller gi den sin egen resolver og rute. Når navn løses inne i den, men proxyen aldri svarer, er det vanligvis ruten som mangler og ikke adressen.
Omgåelseslister og miljøets forrang
Føy VPN-gatewayen, interne registre og private DNS-suffikser til omgåelseslisten. Prøver klienten å nå gatewayen gjennom proxyen før tunnelen finnes, feiler forbindelsen slik at det ser ut som et proxybrudd. Test dette med tunnelen nede.
Miljøvariabler og filer kan være uenige. Kjør verktøyets egen konfigurasjonsdump og ikke skallets, og sammenlign verdiene. En duplikatvariabel med små bokstaver, en gammel verdi i et overordnet skall eller en prosjektfil kan slå innstillingen du nettopp endret.
I CI sender du proxyen som en hemmelig variabel og tester installasjon av én pakke i det samme imaget. En 407 i en container betyr ofte at variabelen rett og slett mangler der, mens vertens skall har den.
Skriv ned proxyvert, port, omgåelsessuffikser og filen eller variabelen som gir dem, for hvert verktøy. Når én klient svarer 407 og en annen virker, gjør notatet sammenligningen av fire ulike konfigurasjoner om til en kort sjekk.