Uudised
22.10.2024
Pääsutõendi võimaluse lisandumine
GovSSO hakkab toetama pääsutõendi (access token) väljastamist. Pääsutõendi väljastus on klientrakenduse põhine ning antud funktsionaalsuse kasutamiseks tuleb vastav soov registreerida (saates kirja help@ria.ee).
Sarnaselt identsustõendile (ID token) väljastatakse pääsutõend identsustõendipäringu ja seansi uuendamise päringu vastustes ning see on JWT vormingus. Pääsutõendi kehtivusaeg (vahemikus 1-15 minutit) ja sihtrühmad tuleb klientrakenduse põhiselt kokku leppida.
Pääsutõendit saab klientrakendus kasutada kui soovib enda süsteemi üles ehitada selliselt, et teatud back-end komponendid ei tea kasutaja seansi olekut, vaid API päringutel valideerivad pääsutõendit. Kokkuvõttes võimaldab pääsutõendi kasutamine toetada klientrakendustel https://datatracker.ietf.org/doc/html/draft-ietf-oauth-browser-based-apps juures välja toodud “6.1. Backend For Frontend (BFF)” ja “6.2. Token-Mediating Backend” arhitektuurimustreid.
Kirjeldatud funktsionaalsuse lisandumisel GovSSO-sse anname sellest teada koos vastava dokumentatsiooniga.
07.02.2024
Näidisklient
GovSSO example client leht kirjeldab GovSSO näidisklientrakendust. Näidisklient on implementeeritud Java platvormil ja demonstreerib kõiki vooge, mida GovSSO liidestuja peab implementeerima (autentimine, seansi uuendamine, väljalogimine, taustakanali väljalogimine). Koodibaas on mõeldud õppeotstarbeliseks uurimiseks, seda ei saa out of the box toodangus kasutada.
Demo leht kirjeldab näidiskliendi kahte paigaldust, mis on avalikult kättesaadavad demonstreerimise ja testimise eesmärgil. Need paigaldused on integreeritud GovSSO teenuse demokeskkonnaga (govsso-demo.ria.ee
) ja demonstreerivad kõiki ülalnimetatud GovSSO kliendi vooge.
26.10.2023
07.11.2023 vahetub TLS sertifikaat govsso-demo.ria.ee
keskkonnas ja 14.11.2023 vahetub govsso.ria.ee
keskkonnas.
• Palume klientidel, kes on oma teenuses usaldanud senist DigiCert juursertifikaati (DigiCert Global Root CA), lisada enne vahetusaega usaldusankruks uus DigiCert juursertifikaat (DigiCert Global Root G2) ja eemaldada pärast vahetusaega senine juursertifikaat.
• Palume klientidel, kes on oma teenuses usaldanud senist DigiCert vahesertifikaati (DigiCert TLS Hybrid ECC SHA384 2020 CA1), asendada usaldusankur kas juursertifikaadiga või lõppolemi sertifikaadiga.
• Palume klientidel, kes on oma teenuses usaldanud otse Riigi autentimisteenuse TLS lõppolemi sertifikaati (*.ria.ee
), lisada enne vahetusaega usaldusankruks uus lõppolemi sertifikaat ja eemaldada pärast vahetusaega senine lõppolemi sertifikaat.
Täpsemalt TLS ühenduste usaldamisest: https://e-gov.github.io/GOVSSO/TechnicalSpecification#712-verifying-the-tls-connection-to-endpoints. Kui Teil esineb teenusega probleeme, siis palun võtke meiega ühendust help@ria.ee.
18.10.2023
Makett
GovSSO mock leht kirjeldab GovSSO makettrakenduse kasutust. GovSSO makett on rakendus, mis serveerib GovSSO protokolli klientrakendustele. Selle põhilised kasutusalad on:
- Võimaldada klientrakendustel arendada ja testida liidestust GovSSO protokolliga. Erinevalt GovSSO teenuse demokeskkonnast (
govsso-demo.ria.ee
) saab maketti kasutada ilma RIA-le liitumistaotlust esitamata ja ka internetiühenduse puudumisel või suletud võrkudes. - Pakkuda testimiseks sobivaid andmeid arendus- ja testkeskkondadele. Erinevalt GovSSO teenuse demokeskkonnast (
govsso-demo.ria.ee
) võimaldab makett tagastada suvalisi kasutajaandmeid klientrakendusele ja seda on automaattestidega lihtsam kasutada. Erinevalt GovSSO demokeskkonnast võib maketti kasutada ka infosüsteemi koormustestimise stsenaariumites.
Enne infosüsteemi toodangukeskkonna liidestamist GovSSO toodangukeskkonnaga (govsso.ria.ee
) peab vähemalt üks infosüsteemi keskkond olema liidestatud GovSSO demokeskkonnaga (govsso-demo.ria.ee
) ja liidestus peab olema testitud kasutades GovSSO demokeskkonda. Peamised testistenaariumid on leitavad siit. Enne GovSSO demokeskkonnaga liidestumist võib kasutusele võtta ka maketi ja liidestust testida vastu maketti. Makett tagastab GovSSO protokolli kohaseid vastuseid ja võimaldab simuleerida mitmeid veaolukordi. Kõik valideerimised GovSSO maketis ei ole praegu nii ranged nagu GovSSO demokeskkonnas.
20.03.2023
Seansi uuendamise lahenduse muutus
Senine seansi uuendamise mehhanism (autentimispäringu perioodiline kordamine taustal prompt=none&id_token_hint=...
lisaparameetritega) sõltus veebisirvikutes kolmanda osapoole küpsiste toest. Selleks, et vähendada riski veebisirvikutes kolmanda osapoole küpsiste käitumise muutuste osas ning suurendada GovSSO protokolli vastavust OpenID Connect ja OAuth standarditele, on seansi uuendamise mehhanism asendatud teistsugusega: uuendusluba (refresh token).
GovSSO seansi kehtivuse põhimõte jääb samaks. Autentimisvoo (4.1 Authentication process) käigus saab klientrakendus GovSSO käest isikuandmete tõendi (Identity Token ehk ID Token), millel on lühike kehtivusaeg (tavaliselt 15 minutit, kuid klientrakendus ei tohi seda eeldada, vaid peab kehtivusaja alati lugema isikuandmete tõendi exp
väitest). Klientrakendus tohib kasutajal lubada sisse logitud olla ainult isikuandmete tõendi kehtivusaja vältel. Enne isikuandmete tõendi kehtivusaja lõppu peab klientrakendus sooritama GovSSO seansi uuendamise, et saada uus isikuandmete tõend, mis kehtib järgneva ajaperioodi jooksul. Kui GovSSO seanssi ei ole õnnestunud uuendada ja viimase GovSSO isikuandmete tõendi kehtivusaeg on ületatud, peab klientrakendus logima kasutaja välja.
GovSSO seansi uuendamise voo (4.2 Session update process) ülesehitus on muutunud, kasutatakse uuendusluba (refresh token). Autentimisvoo käigus saab klientrakendus GovSSO käest id_token
kõrval ka refresh_token
väärtuse. refresh_token
väärtus ei ole klientrakenduse poolt kuidagi tõlgendatav ega parsitav, vaid on sõne, mille peab klientrakendus kasutaja seansiga seotult meelde jätma, et seda järgmisel uuendamise päringul GovSSO-le tagasi saata. GovSSO seansi uuendamise päring (6.3 Session update request) on OpenID Connect standardi järgne Refresh Token päring - selle peab sooritama klientrakenduse back-end server GovSSO teenusesse. See on sarnane autentimisvoo käigus sooritatud isikuandmete tõendi päringuga 6.2 ID Token request, aga päringu kehaks tuleb määrata esialgsest autentimisvoost või viimasest uuendamisest saadud refresh_token
väärtus. GovSSO arvestab aktiivse uuendusloana ainult viimati väljastatud refresh_token
‘it - uuendamispäring lubab sisendina ainult kõige viimast uuendusluba, uuendamispäring väljastab vastuses uue uuendusloa ja muudab eelmise kehtetuks. Uuendamispäringu vastuses sisaldub uue refresh_token
väärtuse kõrval ka uus id_token
väärtus - uus isikuandmete tõend, mis kehtib järgneva ajaperioodi jooksul. Uuendusluba kehtib sama kaua kui sama vastusega saadud isikuandmete tõend. Iga uuendamise käigus saadud isikuandmete tõendile rakendada samu tuvatoiminguid, mis autentimisvoo käigus saadud isikuandmete tõendile (7.1 Verification of the ID Token and Logout Token).
GovSSO seansi uuendamist tohib klientrakendus sooritada ainult siis, kui kasutajal on veebisirvikus klientrakenduse leht veel avatud. Selle tagamiseks peab seansi uuendamise protsessi algatama veebisirvikust - kaks minutit enne isikuandmete tõendi kehtivuse lõppu sooritab veebisirvikus klientrakenduse leht taustal JavaScriptiga päringu klientrakenduse back-end serverisse; klientrakenduse back-end sooritab selle käigus päringu GovSSO teenusesse ja õnnestumisel tagastab klientrakenduse lehe JavaScripti taustapäringu vastuseks uue isikuandmete tõendi kehtivuse aja, et veebisirvikus klientrakenduse leht teaks, millal algatada järgmine seansi uuendamise taustapäring JavaScriptiga.
Lisaks soovime liidestujate tähelepanu juhtida järgmistele teemadele:
- Klientrakenduse (ehk infosüsteemi) seansi pikkus ei tohi olla sõltuv GovSSO seansi uuendamise intervallist (ehk GovSSO isikuandmete tõendi kehtivusest). Erinevatel infosüsteemidel võib olla vajadus oma seansi pikkust määrata väga erinevalt: näiteks pankadel on tüüpiliselt väga lühike, kui kasutaja 5 minuti jooksul pole aktiivne olnud, siis logitakse välja; mõni teine infosüsteem võib soovida seda näiteks poole tunni või tunni aja peale määrata. Seetõttu soovitame eristada kaks erinevat asja:
- GovSSO seansi uuendamise päringud; need algatada alati isikuandmete tõendi
exp
miinus 2 minutit hetkel (hetkeseisuga tuleksid siis praktikas umbes 13. minutil, 26. minutil jne pärast esialgset autentimist). GovSSO seansi uuendamise päringuid sooritada selle loogika järgi alati seni kuni infosüsteemi enda seanss kehtib. - Infosüsteemi enda seansi kestvus ja mis tingimustel seda arvestatakse. See loogika ei pea puutuma GovSSO-sse. Näiteks kui infosüsteemil on soov oma seanssi kehtivana hoida 60 minutit kasutaja viimasest aktiivsusest ja mille iganes järgi seda aktiivsust arvestada, siis see ei puutu GovSSO-sse ja GovSSO selles osas mingeid ettekirjutusi ei tee. GovSSO poolest on vajalik ainult see, et seni kuni lõppkasutajal on veebisirvikus infosüsteemi aken/sakk avatud ning infosüsteemi enda seanss on infosüsteemi enda loogika järgi veel kehtiv, et siis infosüsteem algataks veebisirvikust JavaScripti taustapäringu GovSSO seansi uuendamiseks iga kord kui GovSSO isikuandmete tõendi
exp
‘ini on jäänud 2 minutit või vähem.
- GovSSO seansi uuendamise päringud; need algatada alati isikuandmete tõendi
- Kui veebisirvikus sooritada taustapäring JavaScriptiga klientrakenduse back-end serverile 2 minutit enne GovSSO isikuandmete tõendi aegumist, et signaliseerida GovSSO seansi uuendamise vajadust, aga see mingil põhjusel ei õnnestu (näiteks kasutajal on võrguprobleemid vms), siis seda on soovitatav veebisirvikus taustal korrata seni kuni GovSSO isikuandmete tõendi aegumine kätte jõuab. Korduvkatsete (päringute alustamise) vahele soovitame jätta lühikese pausi, näiteks 10 sekundit. Kui uuendamine ei õnnestu ja GovSSO identsustõendi aegumise hetk (
exp
) saab ületatud, siis infosüsteem peab enda poolse seansi lõpetama ja veebisirviku suunama GovSSO väljalogimisotspunkti (s.t. sooritama väljalogimispäringu vastavalt 6.4 Logout request peatükile, andes kaasaid_token_hint
parameetri väärtusena viimase GovSSO isikuandmete tõendi, mis võib selleks hetkeks olla juba aegunud). Väljalogimispäringu puhul GovSSO aktsepteeribid_token_hint
väärtusena aegunud isikuandmete tõendit, sest GovSSO poolne kasutajaseanss võib olla veel kehtiv ja kasutajale on tarvis näidata, millistesse teistesse infosüsteemidesse ta võib olla veel sisse logitud. - Väljalogimise sooritamisel (siis kui kasutaja vajutab veebisirvikus infosüsteemi lehel logi välja, kui ka siis kui eelmises punktis kirjeldatud uuendamine ei õnnestu) tuleb esmalt lõpetada infosüsteemi enda poolne seanss ja seejärel veebisirvik suunata GovSSO väljalogimisotspunkti (s.t. sooritada väljalogimispäring vastavalt 6.4 Logout request peatükile). GovSSO võib omakorda saata infosüsteemile taustakanali väljalogimispäringu (6.5 Back-channel logout request), aga kui infosüsteemis sellise
sid
väärtusega seotud seanssi ei eksisteeri, siis infosüsteem peab seda ignoreerima ja tagastama taustakanali väljalogimispäringu vastuseks HTTP 200 OK olekukoodi.
25.01.2023
Veebisirvikute küpsiste seadetest sõltuvalt esineb taustal tehtava seansi uuendamise päringutega probleeme
Vaikesätetes Safari ja Firefox lehitsejad (ning Chrome incognito režiim) ei edasta vajalikke küpsiseid domeenide vahelistel ümbersuunamistel, mille tulemusel ei õnnestu seansi uuendamine (4.2 Session update process). Oleme välja töötamas alternatiivset lahendust seansi uuendamise protsessi ja protokolli jaoks. Sellest tulenevalt soovitame hetkel mitte implementeerida kehtivas spetsifikatsioonis kirjeldatud seansi uuendamise voogu.
Information System Authority · 2022-2024 · https://github.com/e-gov/GOVSSO