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

Δύο συμβόλαια κρύβονται πίσω από μία ρύθμιση

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

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

Η έξωση συμβαίνει πριν από το άγκιστρο σύνδεσης

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

StageWho can still refuseEffect on the incumbent
Certificate checkServer trust configurationNone
Authentication decisionThe authentication controllerNone, because establishment has not run
Connect handlerA profile scriptAlready evicted in the same-name case
Post-establishmentStatus tooling, monitoringBoth sessions already exist or one is gone

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

Μετακινήστε την απόφαση στην ταυτοποίηση

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

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

Τα διακριτικά μπορούν να περάσουν δίπλα από την πύλη

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

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

Δέστε την κράτηση σε μια παρουσία, όχι σε μια διεύθυνση

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

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

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

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

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