Zrušenie platnosti Status List vysvetlené
Overovateľ, ktorý práve prijal poverenie, potrebuje vedieť, či za ním vydavateľ stále stojí. Token Status List na to odpovedá bez toho, aby sa overovateľ obracal na vydavateľa v súvislosti s konkrétnym poverením: tvrdenie o stave v rámci poverenia odkazuje na kompaktný zoznam a jediný bit v tomto zozname nesie odpoveď.
Tvrdenie o stave v rámci poverenia
Vydavateľ, ktorý podporuje Token Status List, pridá k povereniu tvrdenie o stave v čase vydania. Nesie dve veci: idx, index, ktorý toto poverenie zaberá v zozname, a uri, adresu Status List Token, v ktorom sa nachádza. Na poverení sa nič iné nemení; tvrdenie je len odkaz.
Vydavateľ
Priradí povereniu index a vloží tvrdenie o stave
Tvrdenie sa pridáva iba raz, pri vydaní, a počas celej životnosti poverenia sa nemení
Tvrdenie o stave (v rámci poverenia)
{
"status": {
"status_list": {
"idx": 4271,
"uri": "https://issuer.example/statuslists/employment-2026-q3"
}
}
}Stiahnutie Status List Token
V čase predloženia si overovateľ stiahne uri z tvrdenia o stave. Odpoveďou je podpísaný Status List Token: JWT s hlavičkou typ statuslist+jwt (alebo ekvivalent CWT), poskytovaný ako application/statuslist+jwt. Jeho payload nesie komprimovaný bitový reťazec a spravidla aj ttl, ktorý overovateľovi hovorí, ako dlho môže výsledok uchovávať vo vyrovnávacej pamäti, kým ho musí znova stiahnuť.
Overovateľ
Načíta idx a uri z tvrdenia o stave v práve predloženom poverení
GET uri
Stiahne Status List Token a uloží ho do vyrovnávacej pamäte až na ttl sekúnd
Payload Status List Token (odpoveď)
{
"sub": "https://issuer.example/statuslists/employment-2026-q3",
"iat": 1789200000,
"exp": 1789804800,
"ttl": 43200,
"status_list": {
"bits": 2,
"lst": "eNrbuRgAAhcBXQ"
}
}sub opakuje vlastné URI zoznamu, aby overovateľ mohol potvrdiť, že stiahol správny token. iat a exp ohraničujú platnosť samotného tokenu. ttl, v sekundách, je maximálny čas, počas ktorého môže overovateľ opätovne použiť uloženú kópiu, kým musí zoznam znova stiahnuť.
Dekódovanie bitu
lst je pole bajtov kódované vo formáte base64url a komprimované pomocou DEFLATE vo formáte dát zlib, ktoré overovateľ najprv dekomprimuje. bits udáva, koľko bitov zaberá každé poverenie v zozname: 1, 2, 4 alebo 8. Pri bits: 2 sa poverenie s číslom idx nachádza na bajte idx * 2 / 8 a overovateľ na tomto offsete prečíta dva bity, aby získal hodnotu stavu.
Praktický príklad: idx 4271, bits: 2
- bit_offset = idx * bits = 4271 * 2 = 8542
- byte_index = bit_offset / 8 = 1067
- bit_in_byte = bit_offset % 8 = 6
Overovateľ prečíta bajt 1067 dekomprimovaného poľa, extrahuje dva bity počnúc bitom 6 a výsledok porovná s tabuľkou hodnôt nižšie.
| Hodnota | Význam |
|---|---|
| 0x00 | VALID |
| 0x01 | INVALID |
| 0x02 | SUSPENDED |
| 0x03, 0x0C-0x0F | Špecifické pre aplikáciu / vyhradené |
Zobrazené hodnoty predpokladajú bits: 2. Pri bits: 1 sa zmestia iba VALID (0) a INVALID (1); bits: 4 a bits: 8 ponechávajú viac priestoru pre hodnoty špecifické pre aplikáciu.
Prečo zostáva zoznam malý
Skutočné zoznamy stavov obsahujú prevažne nuly, pretože väčšina poverení, ktoré kedy vydavateľ vydal, je stále platná, a séria rovnakých bitov sa dobre komprimuje. Práve komprimácia DEFLATE nad surovým bitovým reťazcom udržiava zoznam pokrývajúci stovky tisíc poverení na veľkosti len niekoľkých kilobajtov, čo umožňuje, aby bolo stiahnutie celého zoznamu, namiesto dopytovania vydavateľa na jedno poverenie, praktické.
Agregácia: vopred objavovanie zoznamov
Vydavateľ môže voliteľne pridať aggregation_uri do objektu Status List, ktorý odkazuje na koncový bod uvádzajúci URI všetkých Status List Token, ktoré publikuje. Overovateľ, ktorý chce zoznamy vopred stiahnuť a uložiť do vyrovnávacej pamäte skôr, než ich bude potrebovať, namiesto toho, aby každý objavoval až z prvého poverenia, ktoré naň odkazuje, môže použiť tento koncový bod. Toto je voliteľné; nič v hlavnom procese opísanom vyššie od toho nezávisí.
Súvisiace pojmy
Často kladené otázky
Sťahuje si overovateľ pre každé kontrolované poverenie samostatný zoznam?
Nie, jeden Status List Token pokrýva všetky poverenia, ktoré doň vydavateľ zahrnul, potenciálne stovky tisíc. Overovateľ stiahne ten istý token raz a pre každé kontrolované poverenie prečíta iný bit, pričom uloženú kópiu opätovne používa až ttl sekúnd, kým ju znova nestiahne.
Môže vydavateľ zistiť, ktoré poverenie overovateľ overoval?
Nie. Overovateľ si jednou požiadavkou stiahne celý komprimovaný bitový reťazec a potrebný bit prečíta lokálne, takže požiadavka, ktorú vidí vydavateľ, neobsahuje ani index, ani identifikátor poverenia, iba GET pre samotný zoznam.
Aký je rozdiel medzi suspended a invalid?
INVALID (0x01) je spôsob, akým referenčný register v špecifikácii označuje trvalo odvolané poverenie. SUSPENDED (0x02) je samostatný, vratný stav, ktorý môže vydavateľ tiež nastaviť a neskôr zrušiť, napríklad počas prešetrovania sporu. Na ich rozlíšenie sú potrebné aspoň dva bity na záznam (bits: 2), takže Status List Token používajúci bits: 1 dokáže rozlíšiť iba valid od invalid.
Na čo slúži aggregation_uri?
Ide o voliteľný odkaz vnútri objektu Status List na agregačný koncový bod, ktorý uvádza URI všetkých Status List Token od daného vydavateľa. Overovateľ, ktorý si chce vopred pripraviť vyrovnávaciu pamäť alebo objaviť zoznamy, ktoré ešte nevidel, môže namiesto čakania na poverenie, ktoré niektorý z nich uvedie, použiť tento koncový bod.
Zdroje
Táto stránka má informatívny charakter a nepredstavuje právne poradenstvo. Pre záväzné usmernenie si pozrite priamo špecifikáciu IETF.