Programmering

Java Tips 42: Skriv Java-apper som fungerer med proxy-baserte brannmurer

Nesten alle selskaper er opptatt av å beskytte sitt interne nettverk mot hackere og tyver. Et vanlig sikkerhetstiltak er å koble bedriftsnettverket fra Internett helt. Hvis skurkene ikke kan koble til noen av maskinene dine, kan de ikke hacke seg inn i dem. Den uheldige bivirkningen av denne taktikken er at interne brukere ikke får tilgang til eksterne Internett-servere, som Yahoo eller JavaWorld. For å løse dette problemet installerer nettverksadministratorer ofte noe som kalles en "proxy-server". I hovedsak er en proxy en tjeneste som sitter mellom Internett og det interne nettverket og administrerer forbindelser mellom de to verdenene. Fullmakter hjelper til med å redusere sikkerhetstrusler utenfor, samtidig som interne brukere får tilgang til Internett-tjenester. Mens Java gjør det enkelt å skrive Internett-klienter, er disse klientene ubrukelige med mindre de kan komme forbi proxyen din. Heldigvis gjør Java det enkelt å jobbe med fullmakter - hvis du kjenner de magiske ordene, altså.

Hemmeligheten med å kombinere Java og proxyer ligger i å aktivere visse systemegenskaper i Java-kjøretiden. Disse egenskapene ser ut til å være papirløse, og hviskes de mellom programmerere som en del av Java folklore. For å jobbe med en proxy, må Java-applikasjonen spesifisere informasjon om selve proxyen, samt spesifisere brukerinformasjon for autentiseringsformål. Før du begynner å jobbe med noen internettprotokoller i programmet ditt, må du legge til følgende linjer:

System.getProperties (). Put ("proxySet", "true"); System.getProperties (). Put ("proxyHost", "myProxyMachineName"); System.getProperties (). Put ("proxyPort", "85"); 

Den første linjen ovenfor forteller Java at du skal bruke en proxy for tilkoblingene dine, den andre linjen spesifiserer maskinen som proxyen lever på, og den tredje linjen angir hvilken port proxyen lytter på. Noen fullmakter krever at brukeren skriver inn et brukernavn og passord før Internett-tilgang blir gitt. Du har sannsynligvis møtt denne oppførselen hvis du bruker en nettleser bak en brannmur. Slik utfører du godkjenningen:

URLConnection connection = url.openConnection (); Strengpassord = "brukernavn: passord"; Streng kodetPassord = base64Encode (passord); connection.setRequestProperty ("Proxy-autorisasjon", kodet passord); 

Ideen bak ovennevnte kodefragment er at du må justere HTTP-overskriften for å sende ut brukerinformasjonen din. Dette oppnås med setRequestProperty () anrop. Denne metoden lar deg manipulere HTTP-overskriftene før forespørselen sendes ut. HTTP krever at brukernavnet og passordet skal være base64-kodet. Heldigvis er det et par API-er for offentlig domene som vil utføre kodingen for deg (se seksjonen Ressurser).

Som du kan se, er det ikke mye å legge til proxy-støtte til Java-applikasjonen din. Gitt hva du nå vet, og litt forskning (du må finne ut hvordan proxyen din håndterer protokollen du er interessert i, og hvordan du skal håndtere brukerautentisering), kan du implementere proxyen din med andre protokoller.

Proxying FTP

Scott D. Taylor sendte inn den magiske besvergelsen for å håndtere fullmakt til FTP-protokollen:

defaultProperties.put ("ftpProxySet", "true"); defaultProperties.put ("ftpProxyHost", "proxy-host-name"); defaultProperties.put ("ftpProxyPort", "85"); 

Du kan da få tilgang til filens URL-er ved å bruke "ftp" -protokollen via noe sånt som:

URL url = ny URL ("ftp://ftp.netscape.com/pub/navigator/3.04/windows/readme.txt"); 

Hvis noen har eksempler på bruk av proxy med andre Internett-protokoller, vil jeg gjerne se dem.

Merk: Eksempelkoden (eksempel.java) er bare testet med JDK 1.1.4.

Ron Kurr har jobbet som programvareingeniør i Cabletron Systems de siste åtte årene, med C ++, Unix og NT. De siste to årene har han viet seg til Java og Internett-teknologier.

Lær mer om dette emnet

  • java.lang.System //www.javasoft.com/products/jdk/1.1/docs/api/java.lang.System.html
  • java.net.URLConnection //www.javasoft.com/products/jdk/1.1/docs/api/java.net.URLConnection.html
  • HTTP Client API //www.innovation.ch/java/HTTPClient/
  • Cabletron Systems //www.cabletron.com/
  • CsProxy (en gratis proxy-server) //www.cabletron.com/csproxy/
  • Relevante RFCer //www.cabletron.com/csproxy/handbook/rfc/

Denne historien, "Java Tips 42: Skriv Java-apper som fungerer med proxy-baserte brannmurer" ble opprinnelig utgitt av JavaWorld.

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