Siirry pääsisältöön

Status List -peruutus selitettynä

Todentaja, joka on juuri vastaanottanut valtuustiedon, tarvitsee tiedon siitä, seisooko myöntäjä yhä sen takana. Token Status List vastaa tähän ilman, että todentajan tarvitsee ottaa myöntäjään yhteyttä juuri kyseisen valtuustiedon osalta: valtuustiedon sisällä oleva status-väite osoittaa kompaktiin listaan, ja yksi listan bitti kertoo vastauksen.

Valtuustiedon sisällä oleva status-väite

Myöntäjä, joka tukee Token Status Listiä, lisää valtuustietoon status-väitteen sen myöntöhetkellä. Se sisältää kaksi asiaa: idx, indeksin, joka kuuluu tälle valtuustiedolle listan sisällä, ja uri, osoitteen Status List Tokeniin, joka sisältää sen. Mikään muu valtuustiedossa ei muutu; väite on vain osoitin.

Myöntäjä

Antaa valtuustiedolle indeksin ja upottaa siihen status-väitteen

Väite lisätään kerran, myöntöhetkellä, eikä se muutu koskaan valtuustiedon elinkaaren aikana

Status-väite (valtuustiedon sisällä)

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

Status List Tokenin hakeminen

Esitystilanteessa todentaja hakee status-väitteestä saadun uri-osoitteen. Vastaus on allekirjoitettu Status List Token: JWT, jonka typ-otsake on statuslist+jwt (tai vastaava CWT), tarjoiltuna muodossa application/statuslist+jwt. Sen hyötykuorma sisältää pakatun bittijonon ja yleensä myös ttl-arvon, joka kertoo todentajalle, kuinka kauan se saa käyttää tulosta välimuistista ennen seuraavaa hakua.

Todentaja

Lukee idx- ja uri-arvot juuri esitetyn valtuustiedon status-väitteestä

GET uri

Hakee Status List Tokenin ja tallentaa sen välimuistiin enintään ttl sekunniksi

Status List Tokenin hyötykuorma (vastaus)

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

sub toistaa listan oman URI:n, jotta todentaja voi varmistaa hakeneensa oikean tokenin. iat ja exp rajaavat tokenin oman voimassaolon. ttl, sekunteina, on enimmäisaika, jonka todentaja saa käyttää välimuistissa olevaa kopiota uudelleen ennen kuin sen on haettava lista uudelleen.

Bitin tulkitseminen

lst on tavutaulukko, base64url-koodattu ja pakattu DEFLATE-menetelmällä zlib-datamuodossa, jonka todentaja purkaa ensin. bits kertoo, kuinka monta bittiä kukin listan valtuustieto vie: 1, 2, 4 tai 8. Kun bits: 2, valtuustieto numero idx sijaitsee tavussa idx * 2 / 8, ja todentaja lukee kyseisestä kohdasta kaksi bittiä saadakseen tilan arvon.

Esimerkki: idx 4271, bits: 2

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

Todentaja lukee puretun taulukon tavun 1067, poimii kaksi bittiä alkaen bitistä 6 ja vertaa tulosta alla olevaan arvotaulukkoon.

ArvoMerkitys
0x00VALID
0x01INVALID
0x02SUSPENDED
0x03, 0x0C-0x0FSovelluskohtainen / varattu

Näytetyt arvot olettavat, että bits: 2. Kun bits: 1, vain VALID (0) ja INVALID (1) mahtuvat mukaan; bits: 4 ja bits: 8 jättävät enemmän tilaa sovelluskohtaisille arvoille.

Miksi lista pysyy pienenä

Todelliset status-listat ovat pääosin nollia, koska suurin osa myöntäjän koskaan myöntämistä valtuustiedoista on yhä voimassa, ja samanlaisten bittien sarja pakkautuu hyvin. DEFLATE-pakkaus raa'an bittijonon päällä pitää satojatuhansia valtuustietoja kattavan listan koon muutamassa kilotavussa siirrettäessä, mikä tekee koko listan hakemisesta, sen sijaan että myöntäjältä kysyttäisiin yhdestä valtuustiedosta, käytännöllistä.

Koontaminen: listojen löytäminen etukäteen

Myöntäjä voi halutessaan lisätä Status List -objektiin aggregation_uri-kentän, joka osoittaa pisteeseen, joka listaa kaikkien sen julkaisemien Status List Tokenien URI:t. Todentaja, joka haluaa hakea ja tallentaa listoja välimuistiin etukäteen ennen kuin tarvitsee niitä, sen sijaan että löytäisi kunkin listan ensimmäisestä siihen viittaavasta valtuustiedosta, voi käyttää tätä pistettä. Tämä on valinnaista; mikään yllä kuvatussa ydinkulussa ei riipu siitä.

Aiheeseen liittyvät termit

Usein kysytyt kysymykset

Hakeeko todentaja erillisen listan jokaiselle tarkistamalleen valtuustiedolle?

Ei, yksi Status List Token kattaa kaikki myöntäjän siihen sisällyttämät valtuustiedot, mahdollisesti satoja tuhansia. Todentaja hakee saman tokenin kerran ja lukee eri bitin kutakin tarkistamaansa valtuustietoa varten, minkä jälkeen se käyttää välimuistissa olevaa kopiota uudelleen enintään ttl sekunnin ajan ennen seuraavaa hakua.

Voiko myöntäjä nähdä, mitä valtuustietoa todentaja tarkisti?

Ei voi. Todentaja lataa koko pakatun bittijonon yhdellä pyynnöllä ja lukee tarvitsemansa bitin paikallisesti, joten myöntäjän näkemä pyyntö ei sisällä indeksiä eikä valtuustiedon tunnistetta, ainoastaan listan itsensä GET-pyynnön.

Mitä eroa on tilalla suspended ja tilalla invalid?

INVALID (0x01) on tapa, jolla määrittelyn viiterekisteri merkitsee pysyvästi peruutetun valtuustiedon. SUSPENDED (0x02) on erillinen, palautettavissa oleva tila, jonka myöntäjä voi myös asettaa ja myöhemmin poistaa, esimerkiksi kiistan selvittämisen ajaksi. Näiden erottaminen edellyttää vähintään kahta bittiä per merkintä (bits: 2), joten bits: 1 -arvoa käyttävä Status List Token voi erottaa vain valid- ja invalid-tilat toisistaan.

Mihin aggregation_uri on tarkoitettu?

Se on valinnainen osoitin Status List -objektin sisällä koontipisteeseen, joka listaa kaikkien kyseisen myöntäjän Status List Tokenien URI:t. Todentaja, joka haluaa lämmittää välimuistinsa etukäteen tai löytää listoja, joita se ei ole vielä nähnyt, voi hakea tämän pisteen sen sijaan, että odottaisi valtuustietoa, joka nimeää yhden.

Lähteet

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

Tämä sivu on informatiivinen eikä muodosta oikeudellista neuvontaa. Auktoritatiivista ohjeistusta varten katso suoraan IETF-määrittelystä.

Keskustele kanssamme EUDI Wallet -integraatiosta