OIDC -istunnon hallinta
Tässä artikkelissa selitetään, miten OIDC-istunnot ja käyttäjän todentamisen tila hallitaan IdP:n ja SP:n välisten vuorovaikutusten yhteydessä.
Mikä on OIDC-istunnon hallinta
OpenID Connect (OIDC) on yksinkertainen tunnistustaso, joka on rakennettu OAuth 2.0 -protokollan päälle. Se sallii asiakkaiden vahvistaa loppukäyttäjän identiteetin niiden todennusten perusteella, jotka valtuutuksen palvelin on suorittanut, sekä saada perusprofiilitietoja loppukäyttäjästä yhteentoimivalla ja REST-tyyppisellä tavalla.
OIDC on suunniteltu olemaan helppokäyttöinen ja toteutettavissa oleva, keskittyen yksinkertaisuuteen ja joustavuuteen. Sitä käytetään laajasti kertakirjautumiseen (SSO) ja identiteetin varmentamiseen web-sovelluksissa, mobiilisovelluksissa ja API-rajapinnoissa.
Todentamisen tilan ja istunnon hallinnan ymmärtäminen OIDC:ssä on ratkaisevaa. Tässä artikkelissa selitetään, miten OIDC-istuntoja ja käyttäjän todentamisen tilaa hallitaan tunnistuspalveluntarjoajan (Identity Provider, IdP) ja luottavan osapuolen (Relying Party, RP) tai palveluntarjoajan (Service Provider, SP) välisten vuorovaikutusten yhteydessä.
Tässä artikkelissa mukana useita keskeisiä termejä.
- Tunnistuspalveluntarjoaja (IdP): Palvelu, joka tallentaa ja todentaa käyttäjien identiteetit.
- Palveluntarjoaja (SP) tai luottava osapuoli (RP): Verkkosovellus tai palvelu, joka tarjoaa palveluja käyttäjille ja luottaa IdP:hen käyttäjän tunnistamisessa.
- Kirjautumisistunto tai todentamisistunto: Istunto, joka luodaan, kun käyttäjä kirjautuu sisään IdP:lle.
- Myöntäminen: Keskeinen käyttäjän tunnistus- ja valtuutustieto, jota IdP hallinnoi.
- Kertakirjautuminen (SSO): Istunto- ja käyttäjän tunnistuspalvelu, joka mahdollistaa käyttäjän käyttää yhtä kirjautumistietoja (esim. nimi ja salasana) päästäkseen useisiin sovelluksiin.
Miten OIDC-todennusprosessi toimii
Ymmärtääksemme paremmin OIDC-istuntojen ja käyttäjän tunnistamisen tilan hallintaa, tarkastellaan lyhyesti OIDC-todennusprosessia verkkosovellusta varten:
- Käyttäjä avaa verkkosovelluksen (RP).
- RP ohjaa käyttäjän OIDC-tarjoajalle (IdP) todennusta varten.
- OIDC-tarjoaja tarkistaa käyttäjän kirjautumisistunnon tilan. Jos istuntoa ei ole tai istunto on vanhentunut, käyttäjää pyydetään kirjautumaan sisään.
- Käyttäjä vuorovaikuttaa kirjautumissivun kanssa päästäkseen kirjautumaan.
- Kirjautumissivu lähettää vuorovaikutuksen tuloksen OIDC-tarjoajalle.
- OIDC-tarjoaja luo uuden kirjautumisistunnon ja todentamisgrantin käyttäjälle.
- OIDC-tarjoaja ohjaa käyttäjän takaisin RP:lle todennuskoodilla (valtuutuskoodivirta).
- RP saa todennuskoodin ja vaihtaa sen tunnuksiksi päästäkseen käsiksi käyttäjätietoihin.
Mikä on RP-kirjautumisistunnon hallinta
Kirjautumisistunto luodaan, kun käyttäjä kirjautuu sisään IdP:lle. Tätä istuntoa käytetään seuraamaan käyttäjän todentamisen tilaa IdP:llä. Istunto sisältää tyypillisesti tietoja, kuten käyttäjän tunnistus, todennuksen aika ja istunnon vanhentumisaika. Se luodaan, kun käyttäjä kirjautuu ensimmäisen kerran sisään ja ylläpidetään, kunnes käyttäjä kirjautuu ulos tai istunto vanhentuu.
Käyttäjän selaimeen asetetaan turvallisesti istuntovoimake ylläpitämään istunnon tilaa. Istuntovoimaketta käytetään käyttäjän istunnon tunnistamiseen ja käyttäjän todentamiseen seuraavia todennuspyyntöjä varten. Tämä voimake on yleensä asetettu HttpOnly
- ja Secure
-lipuilla estämään asiakaspään pääsy ja takaamaan suojattu kommunikaatio.
Yksi istunto yhdelle RP:lle
Jokaiselle RP:lle, johon käyttäjä pääsee eri laitteista tai selaimista, luodaan erillinen käyttäjän kirjautumisistunto. Tämä tarkoittaa, että käyttäjän todentamisen tila säilytetään erikseen jokaiselle RP:lle. Jos käyttäjä kirjautuu ulos yhdeltä RP:ltä, käyttäjä pysyy silti todentautuneena muilla RP:illä, kunnes istunto vanhenee tai käyttäjä kirjautuu ulos kaikilta RP:ltä.
Keskitetty istunto useille RP:ille
Tämä keskitetty istunnon hallinta sallii myös IdP:n ylläpitää johdonmukaisen todennuksen tilan useilla RP:illä niin kauan kuin käyttäjän istunto on aktiivinen ja todennuspyynnöt tulevat samalta käyttäjäagentilta (laite/selain). Tämä mekanismi mahdollistaa SSO-ominaisuudet, joissa käyttäjä voi käyttää useita RP:itä kirjautumatta uudestaan sisään.
Asiakaspään tunnistautumistila
OIDC:ssä asiakassovellus (RP) luottaa IdP:n myöntämiin tunnuksiin käyttäjän henkilöllisyyden ja todennus- tai valtuutustilan tarkistamiseksi. "Kirjautumisistunto" asiakaspään puolella ylläpidetään IdP:n myöntämillä tunnuksilla.
- ID-tunnus: Lyhytikäinen tunnus, joka sisältää käyttäjätietoja ja jota käytetään todentamaan todennetun käyttäjän identiteetti.
- Pääsytunnus: Tunnus, joka antaa pääsyn suojattuihin resursseihin käyttäjän puolesta. Pääsytunnuksen elinaika voi olla lyhyt tai pitkä, riippuen asetuksista. Asiakassovellukset voivat luottaa pääsytunnuksen voimassaoloon määrittääkseen käyttäjän todennustilan. Jos pääsytunnus on vanhentunut tai poistettu, käyttäjä voidaan katsoa "kirjautuneeksi ulos" tai "todentamattomaksi" ja hänen täytyy todentaa itsensä uudelleen.
- Virkistystunnus: Jos
offline_access
-oikeus on pyydetty ja myöntänyt, asiakassovellus voi saada virkistystunnuksen. Se tarjoaa keinon pidentää käyttäjän todennustilaa ilman, että käyttäjän tarvitsee todentaa itseään uudelleen. Asiakassovellus voi käyttää virkistystunnusta saadakseen uuden pääsytunnuksen, kun nykyinen pääsytunnus vanhentuu. Niin kauan kuin virkistystunnus on voimassa, käyttäjän todennustilaa voidaan ylläpitää ilman käyttäjän vuorovaikutusta.
Näiden tunnusten yhdistelmä sallii asiakassovelluksen ylläpitää käyttäjän todennustilaa ja päästä suojattuihin resursseihin käyttäjän puolesta. Asiakassovelluksen on tallennettava nämä tunnukset turvallisesti ja hallinnoitava niiden elinkaarta. (Esim. SPA-sovelluksissa tunnukset voidaan tallentaa selaimen paikalliseen muistiin tai istuntomuistiin. Verkkosovelluksissa tunnukset voidaan tallentaa palvelimen puolen istuntotietoihin tai evästeisiin.)
OIDC-kirjautumisen purkumekanismit
Kirjautumisprosessin purku OIDC:ssä on monivaiheinen käsite, koska siihen liittyy sekä keskitettyjä IdP:n hallinnoimia kirjautumisistuntoja että hajautettuja asiakaspään tunnuksia.
Tyhjennä tunnukset ja paikallinen istunto asiakaspäässä
Käyttäjän todennustilan purkaminen tai mitätöinti asiakaspäässä on suhteellisen yksinkertaista. Asiakassovellus voi poistaa tallennetut tunnukset (ID-tunnus, pääsytunnus ja virkistystunnus) käyttäjän selaimesta tai muistista. Tämä toimi mitätöi käyttäjän todennustilan asiakaspäässä.
Verkkosovelluksille, jotka hallinnoivat omia käyttäjän kirjautumisistuntojaan, voi olla tarpeen suorittaa lisävaiheita. Näihin kuuluu istuntovoimakkeen ja kaiken istuntotiedon (kuten tunnukset, jotka Tunnistuspalvelin on myöntänyt, tai IdP) tyhjentäminen varmistaakseen, että käyttäjä on täysin kirjautunut ulos.
Tyhjennä keskitetty kirjautumisistunto IdP:llä
IdP ylläpitää keskitettyä kirjautumisistuntoa jokaiselle käyttäjälle. Niin kauan kuin tämä istunto on aktiivinen, käyttäjä voidaan automaattisesti todentaa uudestaan, vaikka asiakaspään tunnukset on tyhjennetty, jolloin uusia tunnuksia voidaan myöntää asiakassovellukselle ilman lisävuorovaikutusta IdP:n kanssa.
Kun käyttäjä kirjautuu täysin ulos IdP:ltä, asiakassovellus (RP) voi aloittaa uloskirjautumispyynnön IdP:lle. Sovelluksen (RP) pitäisi uudelleenohjata käyttäjä IdP:n istunnon lopetuspisteeseen lopettamaan kirjautumisistunnon ja tyhjentämään istuntoevästeet. Tämä varmistaa täydellisen uloskirjautumisen kaikille sovelluksille (RP), jotka jakavat saman keskitetyn istunnon. Kun kirjautumisistunto on lopetettu, IdP pyytää käyttäjää todenn kunnolla aina, kun se vastaanottaa tunnuspyynnön mistä tahansa linkitetyltä RP:ltä, jotka jakavat saman istunnon.
OIDC-taustakanava kirjaudu ulos
Joissain tapauksissa, kun käyttäjä kirjautuu ulos yhdestä sovelluksesta (RP), hän haluaa mahdollisesti myös kirjautua automaattisesti ulos kaikista muista sovelluksista (RP) ilman lisäkäyttäjävuorovaikutusta. Tämä voidaan toteuttaa käyttämällä taustakanava kirjaudu ulos -mekanismia.
Kun IdP vastaanottaa uloskirjautumispyynnön RP:ltä, se ei ainoastaan tyhjennä kirjautumisistuntoa vaan myös lähettää taustakanava uloskirjautuminen -ilmoituksen kaikille RP:ille, jotka käyttävät samaa istuntoa ja joilla on rekisteröity taustakanava uloskirjautuminen -piste.
Kun RP:t vastaanottavat taustakanava uloskirjautuminen -ilmoituksen, ne voivat suorittaa tarvittavat toimet tyhjentääkseen käyttäjän istunnon ja tunnukset varmistaen, että käyttäjä on täysin kirjautunut ulos kaikista sovelluksista.