Ohjelmointi

Java-vinkki 42: Kirjoita välityspohjaisten palomuurien kanssa toimivat Java-sovellukset

Lähes jokainen yritys huolehtii sisäisen verkkonsa suojaamisesta hakkereilta ja varkailta. Yksi yleinen turvatoimi on irrottaa yritysverkko kokonaan Internetistä. Jos pahikset eivät voi muodostaa yhteyttä mihinkään koneeseesi, he eivät voi hakata niihin. Tämän taktiikan valitettava sivuvaikutus on, että sisäiset käyttäjät eivät voi käyttää ulkoisia Internet-palvelimia, kuten Yahoo tai JavaWorld. Tämän ongelman ratkaisemiseksi verkonvalvojat asentavat usein ns. "Välityspalvelimen". Pohjimmiltaan välityspalvelin on palvelu, joka sijaitsee Internetin ja sisäisen verkon välillä ja hallitsee kahden maailman välisiä yhteyksiä. Välityspalvelimet auttavat vähentämään ulkopuolisia turvallisuusuhkia samalla, kun sisäiset käyttäjät voivat silti käyttää Internet-palveluja. Vaikka Java helpottaa Internet-asiakkaiden kirjoittamista, nämä asiakkaat ovat hyödyttömiä, elleivät he pääse välityspalvelimesi ohitse. Onneksi Java helpottaa välityspalvelimien kanssa työskentelyä - jos tiedät taikasanat.

Jaavan ja välityspalvelimien yhdistämisen salaisuus on tiettyjen järjestelmän ominaisuuksien aktivoiminen Java-ajonaikaisessa tilassa. Nämä ominaisuudet näyttävät olevan dokumentoimattomia, ja ne kuiskaillaan ohjelmoijien välillä osana Java-kansanperinnettä. Jotta voisit työskennellä välityspalvelimen kanssa, Java-sovelluksesi on määritettävä tiedot itse välityspalvelimesta sekä käyttäjätiedot todennusta varten. Ennen kuin aloitat Internet-protokollien käytön, sinun on lisättävä seuraavat rivit ohjelmasi:

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

Ensimmäinen yllä oleva rivi kertoo Javalle, että käytät välityspalvelinta yhteyksiisi, toinen rivi määrittää koneen, jolla välityspalvelin elää, ja kolmas rivi osoittaa, mitä porttia välityspalvelin kuuntelee. Jotkut välityspalvelimet vaativat käyttäjän kirjoittamaan käyttäjänimen ja salasanan ennen Internet-yhteyden myöntämistä. Olet todennäköisesti kohdannut tämän käyttäytymisen, jos käytät verkkoselainta palomuurin takana. Näin suoritat todennuksen:

URLConnection-yhteys = url.openConnection (); Merkkijonon salasana = "käyttäjänimi: salasana"; Merkkijono encodedPassword = base64Encode (salasana); connection.setRequestProperty ("Proxy-Authorization", encodedPassword); 

Yllä olevan koodinpätkän idea on, että sinun on mukautettava HTTP-otsikkoa lähettämään käyttäjätietosi. Tämä saavutetaan setRequestProperty () puhelu. Tämän menetelmän avulla voit manipuloida HTTP-otsikoita ennen pyynnön lähettämistä. HTTP vaatii käyttäjänimen ja salasanan koodauksen base64-muodossa. Onneksi on olemassa muutama julkisen käyttöliittymän sovellusliittymä, jotka suorittavat koodauksen puolestasi (katso Resurssit-osio).

Kuten näette, välityspalvelintuen lisäämiseen Java-sovellukseesi ei ole paljon. Ottaen huomioon nyt tiedät ja vähän tutkimusta (sinun on selvitettävä, kuinka välityspalvelimesi käsittelee sinua kiinnostavaa protokollaa ja miten käsitellä käyttäjän todennusta), voit toteuttaa välityspalvelimesi muiden protokollien kanssa.

Välityspalvelin FTP

Scott D. Taylor lähetti maagisen loitsun käsittelemään FTP-protokollan välityspalvelinta:

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

Tämän jälkeen pääset tiedostojen URL-osoitteisiin käyttämällä "ftp" -protokollaa esimerkiksi:

URL-osoite = uusi URL-osoite ("ftp://ftp.netscape.com/pub/navigator/3.04/windows/readme.txt"); 

Jos jollakin on esimerkkejä välityspalvelimen käytöstä muiden Internet-protokollien kanssa, haluaisin nähdä ne.

merkintä: Esimerkkikoodi (Example.java) on testattu vain JDK 1.1.4: llä.

Ron Kurr on työskennellyt ohjelmistoinsinöörinä Cabletron Systemsissä viimeiset kahdeksan vuotta C ++, Unix ja NT: n avulla. Kahden viime vuoden aikana hän on omistautunut Java- ja Internet-tekniikoille.

Lisätietoja tästä aiheesta

  • 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 -sovellusliittymä //www.innovation.ch/java/HTTPClient/
  • Cabletron Systems //www.cabletron.com/
  • CsProxy (ilmainen välityspalvelin) //www.cabletron.com/csproxy/
  • Asiaankuuluvat RFC: t //www.cabletron.com/csproxy/handbook/rfc/

Tämän tarinan "Java Tip 42: Kirjoita välityspalvelinpalomuureilla toimivat Java-sovellukset" julkaisi alun perin JavaWorld.

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