Programovanie

Tip Java 42: Napíšte aplikácie Java, ktoré pracujú s bránami firewall založenými na proxy serveri

Takmer každá spoločnosť sa zaoberá ochranou svojej internej siete pred hackermi a zlodejmi. Jedným z bežných bezpečnostných opatrení je úplné odpojenie podnikovej siete od Internetu. Ak sa zločinci nemôžu pripojiť k žiadnemu z vašich strojov, nemôžu sa do nich nabúrať. Nešťastným vedľajším účinkom tejto taktiky je, že interní používatelia nemajú prístup k externým internetovým serverom, ako sú Yahoo alebo JavaWorld. S cieľom vyriešiť tento problém správcovia siete často inštalujú tzv. Proxy server. Proxy server je v podstate služba, ktorá sa nachádza medzi internetom a vnútornou sieťou a spravuje spojenia medzi týmito dvoma svetmi. Proxy servery pomáhajú znižovať vonkajšie bezpečnostné riziká a stále umožňujú interným používateľom prístup k internetovým službám. Aj keď Java uľahčuje písanie internetových klientov, sú títo klienti k ničomu, pokiaľ sa nedostanú cez váš proxy server. Java našťastie uľahčuje prácu s proxy - ak poznáte čarovné slová, je to tak.

Tajomstvo kombinácie Java a proxy spočíva v aktivácii určitých vlastností systému za behu Java. Tieto vlastnosti sa zdajú byť neregistrované a medzi programátormi sa šepkajú ako súčasť jávskeho folklóru. Aby mohla vaša aplikácia Java pracovať s proxy serverom, musí špecifikovať informácie o samotnom proxy serveri a tiež uviesť informácie o užívateľovi na účely autentifikácie. Predtým, ako vo svojom programe začnete pracovať s akýmikoľvek internetovými protokolmi, musíte pridať nasledujúce riadky:

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

Prvý riadok vyššie informuje Javu o tom, že na pripojenie budete používať proxy server, druhý riadok určuje počítač, na ktorom proxy server žije, a tretí riadok označuje, na ktorom porte proxy server počúva. Niektoré servery proxy vyžadujú, aby používateľ pred zadaním prístupu na internet zadal používateľské meno a heslo. Pravdepodobne ste sa s týmto správaním stretli, ak používate webový prehľadávač za bránou firewall. Tu je postup, ako vykonať autentifikáciu:

URLConnection connection = url.openConnection (); Reťazec heslo = "používateľské meno: heslo"; Reťazec encodedPassword = base64Encode (heslo); connection.setRequestProperty ("Proxy-Authorization", encodedPassword); 

Za fragmentom kódu stojí myšlienka, že na odoslanie informácií o používateľovi musíte upraviť hlavičku HTTP. Toto sa dosahuje pomocou setRequestProperty () hovor. Táto metóda umožňuje manipulovať s hlavičkami HTTP pred odoslaním žiadosti. HTTP vyžaduje, aby bolo užívateľské meno a heslo zakódované v base64. Našťastie existuje niekoľko rozhraní API vo verejnej doméne, ktoré kódovanie vykonajú za vás (pozri časť Zdroje).

Ako vidíte, pridávanie podpory proxy do vašej aplikácie Java nie je veľa. Vzhľadom na to, čo už viete, a malý prieskum (budete musieť zistiť, ako server proxy pracuje s protokolom, ktorý vás zaujíma, a ako postupovať pri overovaní používateľov), môžete server proxy implementovať do ďalších protokolov.

Proxyovanie FTP

Scott D. Taylor poslal čarovné zaklínadlo, aby sa zaoberal proxyovaním protokolu FTP:

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

Potom môžete získať prístup k adresám URL súborov pomocou protokolu „ftp“ pomocou niečoho ako:

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

Ak má niekto príklady použitia servera proxy s inými internetovými protokolmi, rád ich uvidím.

Poznámka: Vzorový kód (Example.java) bol testovaný iba s JDK 1.1.4.

Ron Kurr pracoval posledných osem rokov ako softvérový inžinier v spoločnosti Cabletron Systems a používal systémy C ++, Unix a NT. Posledné dva roky sa venoval Java a internetovým technológiám.

Získajte viac informácií o tejto téme

  • 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 (bezplatný server proxy) //www.cabletron.com/csproxy/
  • Relevantné RFC //www.cabletron.com/csproxy/handbook/rfc/

Tento príbeh, „Tip Java 42: Napíšte aplikácie Java, ktoré fungujú s bránami firewall založenými na proxy serveri“, pôvodne publikoval server JavaWorld.

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