Bruke Maven Behind a Proxy

1. Introduksjon

I denne opplæringen skal vi konfigurer Maven til å jobbe bak en proxy - en vanlig situasjon i miljøer der vi ikke kobler direkte til internett.

I vårt eksempel kjører vår proxy på maskinen 'proxy.baeldung.com', og den lytter etter proxy-forespørsler via HTTP på port '80'. Vi bruker også noen interne nettsteder på internal.baeldung.com der vi ikke trenger å gå gjennom en proxy.

2. Proxy-konfigurasjon

Først, la oss sette opp en grunnleggende proxy-konfigurasjon uten legitimasjon.

La oss redigere Maven settings.xml vanligvis funnet i vår/.m2 ′ katalog. Hvis det ikke er en der ennå, kan vi kopiere den fra de globale innstillingene på ‘/ conf ' katalog.

Og la oss nå lage en oppføring inne i seksjon:

  proxy.baeldung.com 80 

Siden vi også bruker et lokalt nettsted som ikke trenger å gå gjennom proxyen, la oss spesifisere det i bruker en | skilt liste med vår lokale vert:

internal.baeldung.com | localhost | 127. * | [:: 1] 

3. Legge til legitimasjon

Hvis vår fullmektig ikke var sikret, er det alt vi trenger; men vårt er, så la oss legge til legitimasjonen vår til proxy-definisjonen:

baeldung changeme 

Vi legger ikke til brukernavn / passordoppføringer hvis vi ikke trenger dem - til og med tomme - som å ha dem til stede når fullmektigen ikke vil ha dem, kan føre til at våre forespørsler blir avslått.

Vår minimale autentiserte konfigurasjon skal nå se slik ut:

  proxy.baeldung.com 80 baeldung changeme internal.baeldung.com | localhost | 127. * | [:: 1] 

Nå, når vi kjører mvn kommando, vi går gjennom proxyen for å koble til nettstedene vi er ute etter.

3.1. Valgfrie oppføringer

La oss gi det valgfritt id av ‘BaeldungProxy_Authenticated 'for å gjøre det lettere å referere, i tilfelle vi noen gang trenger å bytte fullmakter:

BaeldungProxy_Authenticated

Nå, hvis vi har en annen proxy, kan vi legge til en annen proxy-definisjon, men bare en kan være aktiv. Som standard vil Maven bruke den første aktive proxy-definisjonen den finner.

Proxy-definisjoner er aktive som standard, og får den implisitte definisjonen:

ekte

Hvis vi ønsket å lage en annen proxy til den aktive, ville vi deaktivere den opprinnelige oppføringen ved å stille inn til falsk:

falsk

Mavens standardverdi for proxy-protokollen er HTTP, som passer i de fleste tilfeller. Hvis proxyen vår bruker en annen protokoll, vil vi erklære den her og erstatte den http med protokollen som vår fullmektig trenger:

http

Merk at dette er protokollen proxyen bruker - protokollen for våre forespørsler (ftp: //, //, //) er uavhengig av dette.

Og her ser vår utvidede proxy-definisjon ut, inkludert valgfrie elementer:

  BaeldungProxy_Authenticated true http proxy.baeldung.com 80 baeldung changeme internal.baeldung.com | localhost | 127. * | [:: 1] 

Så det er det for vår grunnleggende proxyoppføring, men er den sikker nok for oss?

4. Sikre konfigurasjonen

La oss si at en av våre kolleger vil at vi skal sende dem vår proxy-konfigurasjon.

Vi er ikke så opptatt av å sende passordet vårt i ren tekst, så la oss se hvor enkelt Maven gjør det å kryptere passordene våre.

4.1. Opprette et hovedpassord

La oss først velge et hovedpassord, si “te! St! Ma $ ter”.

la oss kryptere hovedpassordet vårt, ved å skrive den inn når du kjører:

mvn --encrypt-master-password Hovedpassord: 

Etter at vi har trykket på enter, ser vi det krypterte passordet vårt mellom krøllete bukseseler:

{QFMlh / 6WjF8H9po9UDo0Nv18e527jqWb6mUgIB798n4 =}

4.2. Feilsøking av generering av passord

Hvis vi ser {} i stedet for Hovedpassord: spør (dette kan skje når du bruker bash), så må vi spesifisere passordet på kommandolinjen.

La oss pakke inn passordet i anførselstegn for å sikre at spesialtegn som ‘!’ ikke har uønskede effekter.

Så la oss bruke enkelt anførselstegn hvis vi bruker bash:

mvn --encrypt-master-password 'te! st! ma $ ter'

Eller bruk dobbel anførselstegn hvis du bruker en Windows-ledetekst:

mvn --encrypt-master-password "te! st! ma $ ter"

Nå, noen ganger inneholder vårt genererte hovedpassord krøllete bukseseler, som dette eksemplet med en avsluttende krøllbøyle, ‘}’, etter ‘UD’:

{QFMlh / 6WjF8H9po9UD} 0Nv18e527jqWb6mUgIB798n4 =}

I dette tilfellet kan vi enten:

  • kjør mvn –encrypt-master-password kommandoen igjen for å generere en til (forhåpentligvis uten en krøllete avstivning)
  • unnslippe de krøllete bukseselene i passordet vårt ved å legge til et tilbakeslag skråstrek foran ‘{’ eller }'

4.3. Opprette en innstillinger-sikkerhet.xml Fil

La oss nå legge inn det krypterte passordet vårt, med en rømt ‘\} ' en fil som heter innstillinger-sikkerhet.xml filen i vår .m2 katalog:

 {QFMlh / 6WjF8H9po9UD \} 0Nv18e527jqWb6mUgIB798n4 =} 

Til slutt lar Maven oss legge til en kommentar inne i hovedelementet.

La oss legge til litt tekst før passordet ‘{’ skilletegn, og pass på å ikke bruke et {eller} i kommentaren vår, ettersom Maven bruker dem til å finne passordet vårt:

Vi slapp den krøllete bøylen med '\' {QFMlh / 6WjF8H9po9UD \} 0Nv18e527jqWb6mUgIB798n4 =}

4.4. Bruke en flyttbar stasjon

La oss si at vi må være ekstra sikre og vil lagre hovedpassordet vårt på en separat enhet.

Først skal vi plassere vår innstillinger-sikkerhet.xml filen i en konfigurasjonskatalog på en flyttbar stasjon, “R:”:

R: \ config \ settings-security.xml

Og nå oppdaterer vi innstillinger-sikkerhet.xml filen i vår .m2 katalog for å omdirigere Maven til vår virkelige innstillinger-sikkerhet.xml på vår flyttbare stasjon:

   R: \ config \ settings-security.xml 

Maven vil nå lese vårt krypterte hovedpassord fra filen vi spesifiserte i flytting element, på den flyttbare stasjonen vår.

5. Kryptering av proxy-passord

Nå har vi et hovedpassord kryptert, det kan vi kryptere proxy-passordet vårt.

La oss kjøre følgende kommando og skrive inn passordet vårt, “forandre meg", på forespørsel:

mvn --krypter passord passord:

Det krypterte passordet vårt vises:

{U2iMf + 7aJXQHRquuQq6MX + n7GOeh97zB9 / 4e7kkEQYs =}

Vårt siste skritt er å rediger proxy-delen i vår settings.xml-fil, og legg inn vårt krypterte passord:

  BaeldungProxy_Encrypted proxy.baeldung.com 80 baeldung {U2iMf + 7aJXQHRquuQq6MX + n7GOeh97zB9 / 4e7kkEQYs =} 

Lagre dette, og Maven skal nå kunne koble til internett via proxyen vår ved hjelp av de krypterte passordene våre.

6. Bruke systemegenskaper

Selv om Det er anbefalt å konfigurere Maven via innstillingsfilen, kunne vi erklære vår proxy-konfigurasjon via Java System Properties.

Hvis operativsystemet vårt allerede har en proxy konfigurert, kan vi angi:

-Djava.net.useSystemProxies = sant

Alternativt, slik at det alltid er aktivert, hvis vi har administratorrettigheter, kan vi sette dette i vår /lib/net.properties fil.

La oss imidlertid merke oss at selv om Maven selv respekterer denne innstillingen, gjør ikke alle plugins det, så vi kan fortsatt få mislykkede tilkoblinger ved hjelp av denne metoden.

Selv når den er aktivert, kan vi overstyre den med sette vår HTTP-proxy-detaljer på http.proxyHost systemegenskap:

-Dhttp.proxyHost = proxy.baeldung.com

Fullmakten vår lytter til standardport 80, men hvis den lyttet til port 8080, ville vi konfigurere http.proxyPort eiendom:

-Dhttp.proxyPort = 8080

Og for nettstedene våre som ikke trenger fullmakten:

-Dhttp.nonLocalHosts = "internal.baeldung.com | localhost | 127. * | [:: 1]"

Så hvis proxyen vår er 10.10.0.100, kan vi bruke:

mvn kompilere -Dhttp.proxyHost = 10.10.0.100 -Dhttp.proxyPort = 8080 -Dhttp.nonProxyHosts = localhost | 127.0.0.1

Selvfølgelig, hvis vår fullmektig krever godkjenning, vi vil også legge til:

-Dhttp.proxyUser = baeldung -Dhttp.proxyPassword = changeme

Og hvis vi ønsket at noen av disse innstillingene skulle gjelde for alle våre Maven-påkallinger, kan vi definere dem i MAVEN_OPTS-miljøvariabelen:

sett MAVEN_OPTS = -Dhttp.proxyHost = 10.10.0.100 -Dhttp.proxyPort = 8080

Nå, når vi løpermvn‘Disse innstillingene blir automatisk brukt - til vi avslutter.

7. Konklusjon

I denne artikkelen konfigurerte vi en Maven-proxy både med og uten legitimasjon og krypterte passordet vårt. Vi så hvordan vi lagret hovedpassordet vårt på en ekstern stasjon, og så også på å konfigurere proxyen ved å bruke systemegenskaper.

Nå kan vi dele vårt settings.xml arkiv med våre kolleger uten å gi dem passordene våre i ren tekst, og vis dem hvordan de kan kryptere deres!

Som vanlig er eksemplene i denne artikkelen tilgjengelig på GitHub.


$config[zx-auto] not found$config[zx-overlay] not found