A method and system are provided for determining whether a principal (e.g.
a thread) may access a particular resource. According to one aspect of the
invention, the access authorization determination takes into account the
sources of the code on the call stack of the principal at the time the
access is desired. Because the source of the code on the call stack will
vary over time, so will the access rights of the principal. Thus, when a
request for an action is made by a thread, a determination is made of
whether the action is authorized based on permissions associated with
routines in a calling hierarchy associated with the thread. The
determination of whether a request is authorized is based on a
determination of whether at least one permission associated with each
routine encompasses the permission required to perform the requested
action. Support for "privileged" routines is also provided. When a routine
in the calling hierarchy is privileged, the determination of whether an
action is authorized is made by determining whether at least one
permission associated with each routine between and including the
privileged routine and a second routine in the calling hierarchy
encompasses the permission required to perform the requested action.
Μια μέθοδος και ένα σύστημα ορίζονται για τον καθορισμό εάν ένας προι4στάμενος (π.χ. ένα νήμα) μπορεί να έχει πρόσβαση σε έναν ιδιαίτερο πόρο. Σύμφωνα με μια πτυχή της εφεύρεσης, ο προσδιορισμός έγκρισης πρόσβασης λαμβάνει υπόψη τις πηγές του κώδικα στο σωρό κλήσης του προι4σταμένου στο χρόνο που η πρόσβαση επιδιώκεται. Επειδή η πηγή του κώδικα στο σωρό κλήσης θα ποικίλει μέσα σε το χρόνο, έτσι τα δικαιώματα πρόσβασης του προι4σταμένου. Κατά συνέπεια, όταν υποβάλλεται ένα αίτημα για μια δράση από ένα νήμα, ένας προσδιορισμός αποτελείται από εάν η δράση εξουσιοδοτείται βασισμένος στις άδειες που συνδέονται με τις ρουτίνες σε μια καλώντας ιεραρχία που συνδέεται με το νήμα. Ο προσδιορισμός εάν ένα αίτημα εξουσιοδοτείται είναι βασισμένος σε έναν προσδιορισμό εάν τουλάχιστον μια άδεια που συνδέεται με κάθε ρουτίνα καλύπτει την άδεια που απαιτείται για να εκτελέσει τη ζητημένη δράση. Η υποστήριξη για "παρείχε προνόμια" στις ρουτίνες παρέχεται επίσης. Όταν μια ρουτίνα στην καλώντας ιεραρχία είναι προνομιούχος, ο προσδιορισμός εάν μια δράση εξουσιοδοτείται γίνεται με τον καθορισμό εάν τουλάχιστον μια άδεια που συνδέεται με κάθε ρουτίνα μεταξύ και συμπεριλαμβανομένης της προνομιούχου ρουτίνας και μια δεύτερη ρουτίνα στην καλώντας ιεραρχία καλύπτει την άδεια που απαιτείται για να εκτελέσει τη ζητημένη δράση.