Programavimas

„Java“ patarimas 42: Parašykite „Java“ programas, kurios veikia su tarpinio serverio užkardomis

Beveik kiekviena įmonė rūpinasi savo vidaus tinklo apsauga nuo įsilaužėlių ir vagių. Viena iš įprastų saugumo priemonių yra visiškai atjungti įmonės tinklą nuo interneto. Jei blogi vaikinai negali prisijungti prie jokios jūsų mašinos, jie negali jų įsilaužti. Nelaimingas šios taktikos šalutinis poveikis yra tas, kad vidiniai vartotojai negali pasiekti išorinių interneto serverių, tokių kaip „Yahoo“ ar „JavaWorld“. Norėdami išspręsti šią problemą, tinklo administratoriai dažnai įdiegia vadinamąjį „tarpinį serverį“. Iš esmės tarpinis serveris yra paslauga, kuri yra tarp interneto ir vidinio tinklo ir valdo ryšius tarp dviejų pasaulių. Įgaliotieji padeda sumažinti išorines grėsmes saugumui, tačiau vis tiek leidžia vidaus vartotojams naudotis interneto paslaugomis. Nors „Java“ leidžia lengvai rašyti interneto klientus, šie klientai yra nenaudingi, nebent jie gali aplenkti jūsų tarpinį serverį. Laimei, „Java“ leidžia lengvai dirbti su įgaliotaisiais atstovais - jei žinote magiškus žodžius, t.

„Java“ ir tarpinių serverių derinimo paslaptis yra tam tikrų sistemos ypatybių aktyvinimas „Java“ vykdymo metu. Panašu, kad šios savybės nėra dokumentuotos ir tarp programuotojų šnabždamos kaip „Java“ folkloro dalis. Norint dirbti su tarpiniu serveriu, jūsų „Java“ programoje reikia nurodyti informaciją apie patį tarpinį serverį, taip pat vartotojo informaciją autentifikavimo tikslais. Savo programoje, prieš pradėdami dirbti su bet kokiais interneto protokolais, turite pridėti šias eilutes:

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

Pirmoje aukščiau esančioje eilutėje „Java“ nurodoma, kad ryšiams naudosite tarpinį serverį, antroje eilutėje nurodoma mašina, kurioje gyvena tarpinis serveris, o trečioje eilutėje nurodoma, kokiame prievade klausosi tarpinis serveris. Kai kurie įgaliotieji reikalauja, kad vartotojas, prieš suteikdamas prieigą prie interneto, įveskite vartotojo vardą ir slaptažodį. Jūs tikriausiai susidūrėte su tokiu elgesiu, jei naudojate interneto naršyklę už užkardos. Štai kaip atlikti autentifikavimą:

URLConnection connection = url.openConnection (); String password = "vartotojo vardas: slaptažodis"; String encodedPassword = base64Encode (slaptažodis); connection.setRequestProperty („Proxy-Authorization“, encodedPassword); 

Pirmiau minėto kodo fragmento idėja yra ta, kad norėdami išsiųsti savo vartotojo informaciją, turite pakoreguoti HTTP antraštę. Tai pasiekiama naudojant setRequestProperty () skambutis. Šis metodas leidžia jums manipuliuoti HTTP antraštėmis prieš išsiunčiant užklausą. HTTP reikalauja, kad vartotojo vardas ir slaptažodis būtų užkoduoti „base64“. Laimei, yra keletas viešosios nuosavybės API, kurios jums atliks kodavimą (žr. Skyrių Ištekliai).

Kaip matote, tarpinio serverio palaikymo prie „Java“ programos pridėti nėra daug. Atsižvelgdami į tai, ką dabar žinote, ir atlikę nedidelį tyrimą (turėsite sužinoti, kaip jūsų įgaliotasis serveris tvarko jus dominantį protokolą ir kaip elgtis su vartotojo autentifikavimu), galite įdiegti savo įgaliotąjį serverį su kitais protokolais.

Tarpinis FTP

Scottas D. Tayloras stebuklingai užkalbėjo FTP protokolą:

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

Tada failų URL galite pasiekti naudodami „ftp“ protokolą, naudodamiesi tokiu būdu:

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

Jei kas nors turi tarpinio serverio naudojimo su kitais interneto protokolais pavyzdžių, norėčiau juos pamatyti.

Pastaba: Kodo pavyzdys (Example.java) buvo išbandytas tik naudojant JDK 1.1.4.

Ron Kurr pastaruosius aštuonerius metus dirbo programinės įrangos inžinieriumi „Cabletron Systems“, naudodamas C ++, Unix ir NT. Pastaruosius dvejus metus jis atsidavė „Java“ ir interneto technologijoms.

Sužinokite daugiau apie šią temą

  • 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 kliento API //www.innovation.ch/java/HTTPClient/
  • „Cabletron Systems“ //www.cabletron.com/
  • „CsProxy“ (nemokamas tarpinis serveris) //www.cabletron.com/csproxy/
  • Atitinkami RFC //www.cabletron.com/csproxy/handbook/rfc/

Šią istoriją „Java 42 patarimas: rašykite„ Java “programas, kurios dirba su tarpinėmis užkardomis“ iš pradžių paskelbė „JavaWorld“.