Liigu põhisisu juurde

Status List tühistamine selgitatud

Kontrollija, kes on äsja tunnistuse vastu võtnud, peab teadma, kas väljaandja seisab selle taga endiselt. Token Status List vastab sellele ilma, et kontrollija peaks väljaandjaga selle konkreetse tunnistuse osas ühendust võtma: tunnistuse sees olev status-väide viitab kompaktsele nimekirjale ja üks bitt selles nimekirjas kannab vastust.

Status-väide tunnistuse sees

Väljaandja, kes toetab Token Status List'i, lisab tunnistusele väljastamise ajal status-väite. See kannab kahte asja: idx, mis on selle tunnistuse indeks nimekirjas, ja uri, mis on seda hoidva Status List Token'i aadress. Tunnistuse juures ei muutu miski muu, väide on lihtsalt viide.

Väljaandja

Määrab tunnistusele indeksi ja lisab status-väite

Väide lisatakse üks kord, väljastamisel, ja ei muutu kunagi tunnistuse kehtivusaja jooksul

Status-väide (tunnistuse sees)

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

Status List Token'i toomine

Esitamise ajal toob kontrollija status-väitest saadud uri. Vastuseks on allkirjastatud Status List Token: JWT, mille typ päis on statuslist+jwt (või vastav CWT), edastatuna kui application/statuslist+jwt. Selle sisu kannab tihendatud bitijada ja tavaliselt ka ttl, mis ütleb kontrollijale, kui kaua ta võib tulemust puhverdada, enne kui peab selle uuesti tooma.

Kontrollija

Loeb just esitatud tunnistuse status-väitest idx ja uri väärtused

GET uri

Toob Status List Token'i ja puhverdab selle kuni ttl sekundiks

Status List Token'i sisu (vastus)

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

sub kordab nimekirja enda URI-d, et kontrollija saaks kinnitada, et ta tõi õige tokeni. iat ja exp piiravad tokeni enda kehtivust. ttl, sekundites, on maksimaalne aeg, mille jooksul kontrollija tohib kasutada puhverdatud koopiat, enne kui ta peab nimekirja uuesti tooma.

Biti dekodeerimine

lst on baidimassiiv, base64url kodeeritud ja tihendatud DEFLATE-iga zlib andmevormingus, mille kontrollija esmalt lahti pakib. bits näitab, mitu bitti iga tunnistus nimekirjas hõivab: 1, 2, 4 või 8. Kui bits: 2, asub tunnistus numbriga idx baidis idx * 2 / 8 ja kontrollija loeb selle nihke juures kaks bitti, et saada oleku väärtus.

Näide: idx 4271, bits: 2

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

Kontrollija loeb lahtipakitud massiivi baidi 1067, eraldab kaks bitti alates bitist 6 ja võrdleb tulemust allpool oleva väärtuste tabeliga.

VäärtusTähendus
0x00VALID
0x01INVALID
0x02SUSPENDED
0x03, 0x0C-0x0FRakendusepõhine / reserveeritud

Näidatud väärtused eeldavad, et bits: 2. Kui bits: 1, mahuvad ainult VALID (0) ja INVALID (1); bits: 4 ja bits: 8 jätavad rohkem ruumi rakendusepõhistele väärtustele.

Miks nimekiri väikesena püsib

Reaalses maailmas koosnevad staatusenimekirjad enamasti nullidest, sest enamik väljaandja poolt kunagi väljastatud tunnistusi on endiselt kehtivad ja järjestikused ühesugused bitid tihenevad hästi. DEFLATE tihendus toorest bitijadast hoiab sadu tuhandeid tunnistusi kattva nimekirja mõne kilobaidi juures, mis teebki terve nimekirja toomise, väljaandjalt ühe tunnistuse kohta küsimise asemel, praktiliseks.

Koondamine: nimekirjade avastamine ette

Väljaandja võib valikuliselt lisada Status List objektile aggregation_uri, mis viitab punktile, kus on loetletud kõigi tema avaldatud Status List Token'ite URI-d. Kontrollija, kes soovib nimekirju ette tuua ja puhverdada enne, kui neid vajab, selle asemel et avastada iga nimekirja esimesest neile viitavast tunnistusest, saab selle asemel kasutada seda punkti. See on valikuline, ülalkirjeldatud põhivoog ei sõltu sellest kuidagi.

Seotud mõisted

Korduma kippuvad küsimused

Kas kontrollija toob iga kontrollitava tunnistuse jaoks eraldi nimekirja?

Ei, üks Status List Token katab kõiki tunnistusi, mille väljaandja on sinna lisanud, potentsiaalselt sadu tuhandeid. Kontrollija toob sama tokeni korra kätte ja loeb iga kontrollitava tunnistuse jaoks erinevat bitti, seejärel kasutab puhverdatud koopiat kuni ttl sekundit, enne kui toob selle uuesti.

Kas väljaandja saab teada, millist tunnistust kontrollija otsis?

Ei. Kontrollija laadib kogu tihendatud bitijada alla ühe päringuga ja loeb vajaliku biti kohapeal, seega ei sisalda väljaandjale nähtav päring ei indeksit ega tunnistuse identifikaatorit, vaid ainult GET-päringu nimekirja enda kohta.

Mis vahe on olekutel suspended ja invalid?

INVALID (0x01) on märgistus, millega spetsifikatsiooni viiteregister tähistab jäädavalt tühistatud tunnistust. SUSPENDED (0x02) on eraldi, pööratav olek, mida väljaandja saab samuti seada ja hiljem eemaldada, näiteks vaidluse uurimise ajal. Nende eristamiseks on vaja vähemalt kahte bitti kirje kohta (bits: 2), seega saab bits: 1 kasutav Status List Token eristada ainult kehtivat ja kehtetut.

Milleks on aggregation_uri?

See on valikuline viide Status List objekti sees koondamispunktile, mis loetleb kõigi selle väljaandja Status List Token'ite URI-d. Kontrollija, kes soovib oma puhvrit ette soojendada või avastada nimekirju, mida ta pole veel näinud, saab selle asemel pöörduda selle punkti poole, selle asemel et oodata, kuni mõni tunnistus selle ette näitab.

Allikad

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

See leht on informatiivne ega kujuta endast õigusnõu. Autoriteetsete juhiste saamiseks vaadake otse IETF spetsifikatsiooni.

Rääkige meiega EUDI Wallet integratsioonist