SAML2:ssa istuntojen pituudet määräytyvät sekä IdP:ssa että SP:ssa. Käyttäjän kokema toiminta muodostuu näiden yhteisestä kokonaisuudesta vaikka niitä ei erityisesti toisiinsa synkronoida.
IdP:n asetukset
Perusasetukset asetetaan conf/idp.properties -tiedostossa.
# Inactivity timeout idp.session.timeout = PT8H # Default lifetime and timeout of various authentication methods idp.authn.defaultLifetime = PT8H idp.authn.defaultTimeout = PT60M
IdP tallentaa käyttäjän istunnon esimerkissä kahdeksan tunnin ajaksi (idp.session.timeout = PT8H). Arvon tulee vähintään yhtä pitkä kuin idp.authn.defaultLifetime.
Esimerkissä on asetettu käyttäjän kertakirjautumisen kestoksi kahdeksan tuntia (idp.authn.defaultLifetime = PT8H). Tämä kertakirjautuminen toimii 8 tunnin ajan ensimmäisestä kirjautumisesta, jos käyttäjä on kerran tunnissa aktiivinen IdP:ssa (idp.authn.defaultTimeout = PT60M). Mikäli käyttäjä ei tuon 60 minuutin sisällä käy IdP:ssa, kertakirjautuminen vanhenee ja käyttäjältä vaaditaan uusi tunnistus seuraavalla kerralla. Eli käyttäjä voi kahdeksan tunnin ajan kertakirjautua IdP:ssa kunhan kukin uusi kirjautuminen tapahtuu maksimissaan tunnin välein.
Esimerkissä kaikilla tunnistusvälineillä pätevät samat ajat. Jos halutaan tunnistusvälinekohtaisesti erilaisia aikoja, ne voidaan konfiguroida conf/authn/general-authn.xml -tiedostossa. Esimerkki https://wiki.shibboleth.net/confluence/display/IDP30/SessionConfiguration#SessionConfiguration-AdvancedSecurityPolicyExample
# Track information about SPs logged into idp.session.trackSPSessions = true # Length of time to track SP sessions idp.session.defaultSPlifetime = PT8H # Extra time to store sessions for logout idp.session.slop = P1D
Jotta IdP tietää mihin kaikkiin SP:hin käyttäjä on kirjautunut, on asetettava päälle SP-istuntojen seuranta (idp.session.trackSPSessions = true). Tällöin IdP osaa lähettää käyttäjän käyttämiin SP:hin uloskirjautumispyynnön. Lisäksi on kerrottava kuinka kauan IdP säilyttää tietoa käyttäjän kirjautumista eri SP:lle (idp.session.defaultSPlifetime = PT8H), jotta SP:lle osataan lähettää uloskirjautumisvastauksia ja -pyyntöjä. Lisäksi logoutia varten voidaan asettaa vielä lisäaikaa (idp.session.slop = P1D) mikä lasketaan alkavan defaultSPlifetimen päälle.
IdP voi asettaa AuthnStatement elementissä SessionNonOnOrAfter -attribuutilla SP:n luoman istunnon keston. Tämän tulisi määrittää aika, jolloin SP voi logout-pyyntöjä lähettää. Käytännössä kaikki SP:t eivät kuitenkaan kunnioita asetusta. Tällöin IdP ei voi tietää SP:den istuntojen kestoja ja joudutaan tekemään paras arvio niistä ja IdP:n käyttäjien tarpeista. Istuntojen säilyttämisen haittapuolena on resurssien kulutus, joten määräämättömän pitkäksi aikaa istuntoja ei kannata tallentaa.