Siirry sisältöön

Arkkitehtuuri

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.

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.

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.