Η ιδιωτική δρομολόγηση αποφασίζει ποιος φτάνει στον διακομιστή· οι κανόνες μεταφοράς του OAuth αποφασίζουν πώς ταξιδεύει κάθε μήνυμα. Ένα πρόγραμμα περιήγησης, ένας διακομιστής εξουσιοδότησης, ένα τελικό σημείο διακριτικών και ένας διακομιστής πόρων μπορούν όλα να βρίσκονται πίσω από το ίδιο VPN και παρ' όλα αυτά να ανταλλάσσουν μηνύματα μέσα από διαφορετικά σκέλη. Κάθε σκέλος έχει τη δική του απαίτηση μεταφοράς, και το VPN δεν χαλαρώνει καμία από αυτές. Το όριο του VPN και το όριο του πρωτοκόλλου είναι δύο διαφορετικές γραμμές.

Η απόφαση γίνεται ευκολότερη αν σταματήσετε να ρωτάτε αν το δίκτυο είναι αξιόπιστο και αρχίσετε να ρωτάτε ποια ανταλλαγή περνά ποιο όριο.

Αποφασίστε ανά σκέλος, όχι ανά δίκτυο

Γράψτε τα τελικά σημεία χωριστά: τελικό σημείο εξουσιοδότησης, τελικό σημείο διακριτικών, URI ανακατεύθυνσης, URL διακομιστή πόρων, σημείο τερματισμού TLS και πύλη VPN. Στη συνέχεια σημειώστε ποιο μέρος ξεκινά κάθε αίτημα και πού πηγαίνει η απόκριση.

Ένα VPN που τερματίζεται σε πύλη κρυπτογραφεί το τμήμα μέχρι αυτή την πύλη. Το αίτημα μπορεί να συνεχιστεί ως απλό HTTP πίσω από αυτήν, και το υπόλοιπο σκέλος δεν έχει γίνει HTTPS επειδή κρυπτογραφήθηκε ένα προηγούμενο τμήμα. Ακριβώς αυτή η συνέχεια είναι το σκέλος που ενδιαφέρει το πρωτόκολλο. Η κρυπτογράφηση του πρώτου άλματος δεν κάνει το δεύτερο άλμα ασφαλές.

Η μεταφορά φέρει επίσης έλεγχο ταυτότητας υπηρεσίας. Το πρόγραμμα περιήγησης επικυρώνει το πιστοποιητικό για το URL της εφαρμογής· ένα VPN δεν εκτελεί αυτή την επικύρωση για λογαριασμό του προγράμματος περιήγησης, και δεν κάνει αποδεκτό ένα μη επικυρωμένο τελικό σημείο. Το πιστοποιητικό ονομάζει το τελικό σημείο που ο πελάτης νομίζει ότι καλεί. Μια σήραγγα προς μια πύλη δεν μετονομάζει αυτό το τελικό σημείο ούτε το επικυρώνει.

Η απόκριση εξουσιοδότησης και το URI ανακατεύθυνσης

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

Η ίδια καθοδήγηση δεν επιτρέπει URIs ανακατεύθυνσης HTTP, εκτός από τη συγκεκριμένη περίπτωση loopback για εγγενείς πελάτες. Ένα εσωτερικό όνομα κεντρικού υπολογιστή δεν δημιουργεί νέα εξαίρεση, και ένα όνομα DNS που επιλύεται μόνο μέσα στο VPN παραμένει URL HTTP αν το σχήμα το λέει. Ελέγξτε το σχήμα στο καταχωρισμένο URI, όχι μόνο το όνομα κεντρικού υπολογιστή.

Καταχωρίστε το ακριβές URI ανακατεύθυνσης HTTPS στον διακομιστή εξουσιοδότησης και κρατήστε ενεργή την επικύρωση πιστοποιητικών στον πελάτη. Μια συντομία ανάπτυξης που καταστέλλει την απαίτηση HTTPS παράγει ροή που συμπεριφέρεται διαφορετικά από τη διαμόρφωση παραγωγής που υποτίθεται ότι μοντελοποιεί.

Το τελικό σημείο διακριτικών και τα αιτήματα με διακριτικό φορέα

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

Για αιτήματα πόρων με διακριτικό φορέα, το RFC 6750 θεωρεί το TLS υποχρεωτικό προς υλοποίηση και χρήση για εκείνη την προδιαγραφή. Το να χαρακτηρίσετε το υποδίκτυο του γραφείου αξιόπιστο δεν είναι η γενική εξαίρεση πρωτοκόλλου που χρειάζεται μια ανάπτυξη φορέα σε απλό κείμενο.

Χρησιμοποιήστε τα τεκμηριωμένα ασφαλή URL τελικών σημείων και για τα δύο σκέλη. Αν μια βιβλιοθήκη αρνείται να καλέσει τελικό σημείο διακριτικών HTTP, αυτή η άρνηση είναι η προδιαγραφή που λειτουργεί, όχι σφάλμα διαμόρφωσης προς παράκαμψη. Καταγράψτε αυτό το URL στη διαμόρφωση του πελάτη αντί να το παράγετε κατά την εκτέλεση.

Πού τερματίζεται το TLS και τι αφήνει πίσω

Αν το TLS τελειώνει σε εξουσιοδοτημένο frontend, ονομάστε αυτό το frontend και εξετάστε τη διαδρομή από αυτό προς την εφαρμογή. Το frontend γίνεται υπεύθυνο για την προώθηση, την εμπιστοσύνη και την εμπιστευτικότητα στο υπόλοιπο τμήμα, και η υποστηριζόμενη αρχιτεκτονική της υπηρεσίας θα πρέπει να περιγράφει αυτή τη διάταξη.

Ένα VPN αλλού στη διαδρομή δεν διευθετεί αυτές τις ευθύνες. Επίσης δεν σας λέει αν το URL της εφαρμογής που βλέπει το πρόγραμμα περιήγησης ταιριάζει με το πιστοποιητικό που παρουσιάζει το frontend.

Για εσωτερική ανάπτυξη, καταγράψτε το σημείο τερματισμού και την ταυτότητα που παρουσιάζει. Ένα frontend που τερματίζει το TLS με πιστοποιητικό για άλλο όνομα δημιουργεί προειδοποίηση στο πρόγραμμα περιήγησης που οι χειριστές συχνά καταστέλλουν αντί να τη διορθώσουν.

Η εξαίρεση εγγενούς loopback είναι στενή

Η εξαίρεση ανακατεύθυνσης loopback αφορά επιστροφή κλήσης στη συσκευή του ίδιου του χρήστη, όπου ο πελάτης και το πρόγραμμα περιήγησης μοιράζονται αυτή τη συσκευή. Αυτή η διάταξη ανήκει σε επιστροφή κλήσης σε μία συσκευή, και δεν επιτρέπει την παροχή ενός κανονικού διακομιστή εξουσιοδότησης ή ενός API με διακριτικά μέσω HTTP σε υποδίκτυο γραφείου.

Κρατήστε την εξαίρεση περιορισμένη στον τύπο πελάτη και στην επιστροφή κλήσης που περιγράφει. Η εφαρμογή της σε εφαρμογή ιστού, σε κοινόχρηστη εσωτερική υπηρεσία ή σε URI ανακατεύθυνσης σε άλλον κεντρικό υπολογιστή αλλάζει την ανάπτυξη, όχι την εξαίρεση.

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

Σχετικά άρθρα