Siirry sisältöön

Avaimet ja allekirjoitus

Kaikki palvelun myöntämät tokenit (access token, ID token) allekirjoitetaan ES256:lla (ECDSA + P-256 + SHA-256). Muita allekirjoitusalgoritmeja ei käytetä tokenien allekirjoitukseen. DPoP-todisteet ovat clientin itsensä allekirjoittamia: discovery ilmoittaa ES256:n, ja validaattori hyväksyy myös RS256-todisteet (ks. Mobiili- ja natiivisovellukset).

Jokaisen tenantin julkiset avaimet on saatavilla osoitteessa:

GET https://id.<tenant-domain>/.well-known/jwks.json

Julkinen, elävä esimerkki: https://id.tunnuspalvelu.fi/.well-known/jwks.json.

Avaimet ovat tenantkohtaisia: yhden tenantin JWKS-dokumentti sisältää vain kyseisen tenantin avaimet, ei muiden tenanttien avaimia.

  1. Lue tokenin headerista kid (key id).
  2. Hae tenantin JWKS-dokumentista avain, jonka kid täsmää.
  3. Validoi allekirjoitus löydetyllä avaimella.

Resurssipalvelimen kannattaa cachetta JWKS-dokumentti lyhyeksi ajaksi (muutamia minuutteja) ja päivittää se uudelleen, jos vastaan tulee kid, jota cachessa ei ole — tämä varmistaa, että juuri rotatoitu avain löytyy ilman viivettä.

Signing-avainten rotaatio on automaattinen ja tenantkohtainen:

  • Taustaprosessi tarkistaa päivittäin, onko tenantin nykyinen avain vähintään 30 vuorokautta vanha, ja rotatoi tarvittaessa uuden avaimen käyttöön.
  • Vanhat avaimet säilytetään jo myönnettyjen tokenien validointia varten ja poistetaan vasta 90 vuorokauden kuluttua rotaatiosta.
  • JWKS-dokumentti ja palvelimen sisäinen avainvälimuisti päivittyvät heti rotaation yhteydessä — uusi avain on siis JWKS:ssä välittömästi, ei vasta välimuistin vanhentumisen jälkeen.

Mitä rotaatio tarkoittaa integraation näkökulmasta

Osio nimeltä “Mitä rotaatio tarkoittaa integraation näkökulmasta”

Rotaatio ei riko integraatiotasi, jos noudatat OIDC:n normaalia mallia: valitse allekirjoitusavain aina token-headerin kid-arvon perusteella JWKS-dokumentista, älä koodaa yhtä avainta kiinteästi sovellukseesi. Vanhoja tokeneita ei tarvitse uudelleen allekirjoittaa rotaation yhteydessä — vanha avain pysyy validointikelpoisena, kunnes sen 90 vuorokauden säilytysaika päättyy.