Μετάβαση στο κύριο περιεχόμενο

Επεξήγηση ανάκλησης μέσω Status List

Ένας επαληθευτής που μόλις έλαβε ένα διαπιστευτήριο πρέπει να γνωρίζει αν ο εκδότης εξακολουθεί να το υποστηρίζει. Το Token Status List απαντά σε αυτό χωρίς ο επαληθευτής να επικοινωνήσει με τον εκδότη για το συγκεκριμένο διαπιστευτήριο: ένας ισχυρισμός κατάστασης μέσα στο διαπιστευτήριο δείχνει σε μια συμπαγή λίστα, και ένα μόνο bit σε αυτή τη λίστα μεταφέρει την απάντηση.

Ο ισχυρισμός κατάστασης μέσα στο διαπιστευτήριο

Ένας εκδότης που υποστηρίζει το Token Status List προσθέτει έναν ισχυρισμό κατάστασης στο διαπιστευτήριο κατά την έκδοση. Περιέχει δύο στοιχεία: το idx, τον δείκτη που κατέχει αυτό το διαπιστευτήριο μέσα στη λίστα, και το uri, τη διεύθυνση του Status List Token που το περιέχει. Τίποτα άλλο στο διαπιστευτήριο δεν αλλάζει· ο ισχυρισμός είναι απλώς ένας δείκτης.

Εκδότης

Αναθέτει στο διαπιστευτήριο έναν δείκτη και ενσωματώνει έναν ισχυρισμό κατάστασης

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

Ισχυρισμός κατάστασης (μέσα στο διαπιστευτήριο)

{
  "status": {
    "status_list": {
      "idx": 4271,
      "uri": "https://issuer.example/statuslists/employment-2026-q3"
    }
  }
}

Ανάκτηση του Status List Token

Κατά την παρουσίαση, ο επαληθευτής ανακτά το uri από τον ισχυρισμό κατάστασης. Η απόκριση είναι ένα υπογεγραμμένο Status List Token: ένα JWT με κεφαλίδα typ ίση με statuslist+jwt (ή ισοδύναμο CWT), το οποίο παραδίδεται ως application/statuslist+jwt. Το περιεχόμενό του φέρει τη συμπιεσμένη ακολουθία bit και, συνήθως, ένα ttl που ενημερώνει τον επαληθευτή πόσο καιρό μπορεί να αποθηκεύσει προσωρινά το αποτέλεσμα πριν το ανακτήσει ξανά.

Επαληθευτής

Διαβάζει τα idx και uri από τον ισχυρισμό κατάστασης (status claim) στο διαπιστευτήριο που μόλις παρουσιάστηκε

GET uri

Ανακτά το Status List Token, αποθηκεύοντάς το προσωρινά έως και ttl δευτερόλεπτα

Περιεχόμενο του Status List Token (απόκριση)

{
  "sub": "https://issuer.example/statuslists/employment-2026-q3",
  "iat": 1789200000,
  "exp": 1789804800,
  "ttl": 43200,
  "status_list": {
    "bits": 2,
    "lst": "eNrbuRgAAhcBXQ"
  }
}

Το sub επαναλαμβάνει το ίδιο το URI της λίστας ώστε ο επαληθευτής να επιβεβαιώνει ότι ανέκτησε το σωστό token. Τα iat και exp οριοθετούν την ισχύ του ίδιου του token. Το ttl, σε δευτερόλεπτα, είναι ο μέγιστος χρόνος κατά τον οποίο ο επαληθευτής μπορεί να επαναχρησιμοποιεί ένα αποθηκευμένο αντίγραφο πριν χρειαστεί να ανακτήσει ξανά τη λίστα.

Αποκωδικοποίηση του bit

Το lst είναι ένας πίνακας byte, κωδικοποιημένος σε base64url και συμπιεσμένος με DEFLATE στη μορφή δεδομένων zlib, τον οποίο ο επαληθευτής αποσυμπιέζει πρώτα. Το bits δηλώνει πόσα bit καταλαμβάνει κάθε διαπιστευτήριο στη λίστα: 1, 2, 4 ή 8. Με bits: 2, το διαπιστευτήριο με αριθμό idx βρίσκεται στο byte idx * 2 / 8, και ο επαληθευτής διαβάζει τα δύο bit σε αυτή τη μετατόπιση για να λάβει την τιμή κατάστασης.

Παράδειγμα εφαρμογής: idx 4271, bits: 2

  • bit_offset = idx * bits = 4271 * 2 = 8542
  • byte_index = bit_offset / 8 = 1067
  • bit_in_byte = bit_offset % 8 = 6

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

ΤιμήΣημασία
0x00VALID
0x01INVALID
0x02SUSPENDED
0x03, 0x0C-0x0FΕιδικό για την εφαρμογή / δεσμευμένο

Οι τιμές που εμφανίζονται προϋποθέτουν bits: 2. Με bits: 1 χωρούν μόνο τα VALID (0) και INVALID (1)· τα bits: 4 και bits: 8 αφήνουν περισσότερο εύρος ελεύθερο για τιμές ειδικές για την εφαρμογή.

Γιατί η λίστα παραμένει μικρή

Στην πράξη, οι λίστες κατάστασης αποτελούνται κυρίως από μηδενικά, επειδή τα περισσότερα διαπιστευτήρια που έχει εκδώσει ποτέ ένας εκδότης παραμένουν έγκυρα, και μια σειρά πανομοιότυπων bit συμπιέζεται καλά. Η συμπίεση DEFLATE πάνω στην ακατέργαστη ακολουθία bit είναι αυτό που διατηρεί μια λίστα που καλύπτει εκατοντάδες χιλιάδες διαπιστευτήρια σε λίγα μόλις kilobyte στο δίκτυο, γεγονός που καθιστά πρακτική την ανάκτηση ολόκληρης της λίστας αντί της ερώτησης προς τον εκδότη για ένα μεμονωμένο διαπιστευτήριο.

Συγκέντρωση: ανακάλυψη λιστών εκ των προτέρων

Ένας εκδότης μπορεί προαιρετικά να προσθέσει το aggregation_uri σε ένα αντικείμενο Status List, το οποίο δείχνει σε ένα τελικό σημείο που παραθέτει τα URI όλων των Status List Token που δημοσιεύει. Ένας επαληθευτής που θέλει να προανακτήσει και να αποθηκεύσει προσωρινά λίστες πριν τις χρειαστεί, αντί να ανακαλύπτει κάθε μία από το πρώτο διαπιστευτήριο που την αναφέρει, μπορεί να χρησιμοποιήσει αυτό το τελικό σημείο. Αυτό είναι προαιρετικό· τίποτα στην παραπάνω βασική ροή δεν εξαρτάται από αυτό.

Σχετικοί όροι

Συχνές ερωτήσεις

Ανακτά ο επαληθευτής ξεχωριστή λίστα για κάθε διαπιστευτήριο που ελέγχει;

Όχι, ένα Status List Token καλύπτει όλα τα διαπιστευτήρια που έχει συμπεριλάβει ο εκδότης, ενδεχομένως εκατοντάδες χιλιάδες. Ο επαληθευτής ανακτά το ίδιο token μία φορά και διαβάζει διαφορετικό bit για κάθε διαπιστευτήριο που ελέγχει, στη συνέχεια επαναχρησιμοποιεί το αποθηκευμένο αντίγραφο για έως ttl δευτερόλεπτα πριν το ανακτήσει ξανά.

Μπορεί ο εκδότης να μάθει ποιο διαπιστευτήριο αναζήτησε ένας επαληθευτής;

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

Ποια είναι η διαφορά μεταξύ suspended και invalid;

Το INVALID (0x01) είναι ο τρόπος με τον οποίο το μητρώο αναφοράς της προδιαγραφής χαρακτηρίζει ένα οριστικά ανακληθέν διαπιστευτήριο. Το SUSPENDED (0x02) είναι μια ξεχωριστή, αναστρέψιμη κατάσταση που μπορεί επίσης να ορίσει ο εκδότης και αργότερα να άρει, για παράδειγμα όσο διερευνάται μια διαφορά. Η διάκρισή τους απαιτεί τουλάχιστον δύο bit ανά καταχώριση (bits: 2), οπότε ένα Status List Token που χρησιμοποιεί bits: 1 μπορεί να διακρίνει μόνο valid από invalid.

Σε τι χρησιμεύει το aggregation_uri;

Είναι ένας προαιρετικός δείκτης μέσα σε ένα αντικείμενο Status List προς ένα τελικό σημείο συγκέντρωσης που παραθέτει τα URI όλων των Status List Token αυτού του εκδότη. Ένας επαληθευτής που θέλει να προθερμάνει την προσωρινή του μνήμη εκ των προτέρων, ή να ανακαλύψει λίστες που δεν έχει δει ακόμη, μπορεί να ανακτήσει αυτό το τελικό σημείο αντί να περιμένει ένα διαπιστευτήριο που θα το κατονομάσει.

Πηγές

  1. IETF Token Status List (draft-ietf-oauth-status-list)

Αυτή η σελίδα είναι ενημερωτική και δεν αποτελεί νομική συμβουλή. Για έγκυρη καθοδήγηση, συμβουλευτείτε απευθείας την προδιαγραφή IETF.

Επικοινωνήστε μαζί μας σχετικά με την ενσωμάτωση EUDI Wallet