Arkkitehtuuri
Komponentit
Osio nimeltä “Komponentit”tunnuspalvelu koostuu korkealla tasolla neljästä osasta:
| Komponentti | Vastuu |
|---|---|
| Sovelluspalvelin | Käsittelee HTTP-pyynnöt: OIDC/OAuth-endpointit, kirjautumis-UI, admin-paneelit ja machine-to-machine-rajapinnan. |
| PostgreSQL | Pysyvä tietovarasto: tenantit, käyttäjät, clientit, tokenit, organisaatiot, audit-loki. |
| Redis | Nopeusrajoitus ja lyhytikäinen ajonaikainen tila (esim. federaatiokirjautumisen väliaikaiset tilat, koneelta koneelle -pyyntöjen toistonesto). |
| Sähköposti-/SMS-kuljettimet | Magic link -linkkien toimitus valitulla kanavalla. |
Tenant-eristys
Osio nimeltä “Tenant-eristys”Jokainen tenant erotetaan seuraavilla tavoilla:
- Host-header-pohjainen reititys. Saapuva pyyntö tunnistetaan tenantiksi HTTP:n
Host-headerin perusteella. Tuntematon host ei resolvoidu mihinkään tenanttiin. - Erilliset signing-avaimet. Jokaisella tenantilla on omat ES256-avaimensa; yhden tenantin avaimella allekirjoitettua tokenia ei voi validoida toisen tenantin avaimilla.
- Erilliset sessiot. Selainistuntoeväste on sidottu tenantin domainiin, ja istuntotiedot haetaan aina kyseisen tenantin omasta tietojoukosta.
- Erilliset clientit ja käyttäjät. OAuth-clientit ja käyttäjätilit kuuluvat aina täsmälleen yhteen tenanttiin — ne eivät ole näkyvissä eivätkä käytettävissä muille tenanteille.
Monen tenantin issuer-malli
Osio nimeltä “Monen tenantin issuer-malli”Jokainen tenant toimii itsenäisenä OIDC-issuerina: sillä on oma
https://id.<tenant-domain>-issuer-URL, oma discovery-dokumentti
(/.well-known/openid-configuration) ja oma JWKS-dokumentti
(/.well-known/jwks.json). Sovelluksesi integroituu aina yhteen nimettyyn tenantiin — ei ole
yhteistä, kaikkien tenanttien jakamaa issueria.
Platform-tason ylläpitokäyttöliittymä (erillinen, ylläpidon käyttöön varattu host) tarjoaa poikkitenanttisen näkymän tenanttien hallintaan, mutta tenantin omat käyttäjät ja clientit eivät koskaan näy toiselle tenantille.