Προγραμματισμός

Συμβουλή Java 42: Δημιουργήστε εφαρμογές Java που λειτουργούν με τείχη προστασίας που βασίζονται σε διακομιστές μεσολάβησης

Σχεδόν κάθε εταιρεία ασχολείται με την προστασία του εσωτερικού της δικτύου από χάκερ και κλέφτες. Ένα κοινό μέτρο ασφαλείας είναι η πλήρη αποσύνδεση του εταιρικού δικτύου από το Διαδίκτυο. Εάν οι κακοί δεν μπορούν να συνδεθούν με κανένα από τα μηχανήματά σας, δεν μπορούν να τους χαράξουν. Η ατυχής παρενέργεια αυτής της τακτικής είναι ότι οι εσωτερικοί χρήστες δεν μπορούν να έχουν πρόσβαση σε εξωτερικούς διακομιστές Διαδικτύου, όπως το Yahoo ή το JavaWorld. Για την αντιμετώπιση αυτού του προβλήματος, οι διαχειριστές δικτύου εγκαθιστούν συχνά κάτι που ονομάζεται "διακομιστής μεσολάβησης". Ουσιαστικά, ένας διακομιστής μεσολάβησης είναι μια υπηρεσία που βρίσκεται μεταξύ του Διαδικτύου και του εσωτερικού δικτύου και διαχειρίζεται τις συνδέσεις μεταξύ των δύο κόσμων. Οι διακομιστές μεσολάβησης συμβάλλουν στη μείωση των εξωτερικών απειλών ασφαλείας, ενώ ταυτόχρονα επιτρέπουν στους εσωτερικούς χρήστες να έχουν πρόσβαση σε υπηρεσίες Διαδικτύου. Ενώ η Java διευκολύνει την εγγραφή πελατών στο Διαδίκτυο, αυτοί οι πελάτες είναι άχρηστοι, εκτός εάν μπορούν να ξεπεράσουν τον διακομιστή μεσολάβησης. Ευτυχώς, η Java διευκολύνει τη συνεργασία με διακομιστές μεσολάβησης - αν γνωρίζετε τις μαγικές λέξεις, δηλαδή.

Το μυστικό του συνδυασμού Java και διακομιστών μεσολάβησης έγκειται στην ενεργοποίηση ορισμένων ιδιοτήτων συστήματος στο χρόνο εκτέλεσης Java. Αυτές οι ιδιότητες φαίνεται να είναι χωρίς έγγραφα και ψιθυρίζονται μεταξύ προγραμματιστών ως μέρος της λαογραφίας Java. Για να εργαστεί με έναν διακομιστή μεσολάβησης, η εφαρμογή Java πρέπει να καθορίσει πληροφορίες σχετικά με τον ίδιο τον διακομιστή μεσολάβησης, καθώς και να καθορίσει πληροφορίες χρήστη για σκοπούς ελέγχου ταυτότητας. Στο πρόγραμμά σας, προτού αρχίσετε να εργάζεστε με πρωτόκολλα Διαδικτύου, θα πρέπει να προσθέσετε τις ακόλουθες γραμμές:

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

Η πρώτη γραμμή παραπάνω λέει στην Java ότι θα χρησιμοποιείτε έναν διακομιστή μεσολάβησης για τις συνδέσεις σας, η δεύτερη γραμμή καθορίζει το μηχάνημα στον οποίο ζει ο διακομιστής μεσολάβησης και η τρίτη γραμμή δείχνει σε ποια θύρα ακούει ο διακομιστής μεσολάβησης. Ορισμένοι διακομιστές μεσολάβησης απαιτούν από έναν χρήστη να πληκτρολογήσει ένα όνομα χρήστη και έναν κωδικό πρόσβασης πριν από την πρόσβαση στο Διαδίκτυο. Πιθανότατα αντιμετωπίσατε αυτήν τη συμπεριφορά εάν χρησιμοποιείτε πρόγραμμα περιήγησης Web πίσω από τείχος προστασίας. Δείτε πώς μπορείτε να εκτελέσετε τον έλεγχο ταυτότητας:

URLConnection σύνδεση = url.openConnection (); String password = "όνομα χρήστη: κωδικός πρόσβασης"; String encodedPassword = base64Encode (κωδικός πρόσβασης); connection.setRequestProperty ("Εξουσιοδότηση διακομιστή μεσολάβησης", κωδικοποιημένος κωδικός πρόσβασης); 

Η ιδέα πίσω από το παραπάνω τμήμα κώδικα είναι ότι πρέπει να προσαρμόσετε την κεφαλίδα HTTP για να στείλετε τις πληροφορίες χρήστη. Αυτό επιτυγχάνεται με το setRequestProperty () κλήση. Αυτή η μέθοδος σας επιτρέπει να χειριστείτε τις κεφαλίδες HTTP πριν αποσταλεί το αίτημα. Το HTTP απαιτεί να κωδικοποιείται το όνομα χρήστη και ο κωδικός πρόσβασης base64. Ευτυχώς, υπάρχουν μερικά API δημόσιου τομέα που θα εκτελέσουν την κωδικοποίηση για εσάς (δείτε την ενότητα Πόροι).

Όπως μπορείτε να δείτε, δεν υπάρχουν πολλά για την προσθήκη υποστήριξης διακομιστή μεσολάβησης στην εφαρμογή Java. Λαμβάνοντας υπόψη αυτό που γνωρίζετε τώρα και λίγη έρευνα (θα πρέπει να μάθετε πώς ο διακομιστής μεσολάβησης χειρίζεται το πρωτόκολλο που σας ενδιαφέρει και πώς να χειριστείτε τον έλεγχο ταυτότητας χρήστη), μπορείτε να εφαρμόσετε τον διακομιστή μεσολάβησης με άλλα πρωτόκολλα.

Μεσολάβηση FTP

Ο Σκοτ ​​Δ. Τέιλορ έστειλε τη μαγική ματιά για να ασχοληθεί με το διακομιστή μεσολάβησης του πρωτοκόλλου FTP:

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

Στη συνέχεια, μπορείτε να αποκτήσετε πρόσβαση στις διευθύνσεις URL των αρχείων χρησιμοποιώντας το πρωτόκολλο "ftp" μέσω κάτι όπως:

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

Εάν κάποιος έχει παραδείγματα χρήσης διακομιστή μεσολάβησης με άλλα πρωτόκολλα Διαδικτύου, θα ήθελα πολύ να τα δω.

Σημείωση: Ο κωδικός παραδείγματος (Example.java) έχει δοκιμαστεί μόνο με JDK 1.1.4.

Ο Ron Kurr εργάζεται ως μηχανικός λογισμικού στο Cabletron Systems τα τελευταία οκτώ χρόνια, χρησιμοποιώντας C ++, Unix και NT. Τα τελευταία δύο χρόνια έχει αφιερωθεί στις τεχνολογίες Java και Internet.

Μάθετε περισσότερα σχετικά με αυτό το θέμα

  • 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
  • API πελάτη HTTP //www.innovation.ch/java/HTTPClient/
  • Συστήματα Cabletron //www.cabletron.com/
  • CsProxy (ένας δωρεάν διακομιστής μεσολάβησης) //www.cabletron.com/csproxy/
  • Σχετικά RFC //www.cabletron.com/csproxy/handbook/rfc/

Αυτή η ιστορία, "Συμβουλή Java 42: Γράψτε εφαρμογές Java που λειτουργούν με τείχη προστασίας που βασίζονται σε διακομιστές μεσολάβησης" δημοσιεύθηκε αρχικά από την JavaWorld.