Kansallinen PHR auktorisointimallit ja OAuth 2 0 protokollan

  • Slides: 42
Download presentation
Kansallinen PHR: auktorisointimallit ja OAuth 2. 0 -protokollan soveltamisopas Konstantin Hyppönen, Kanta-palvelut, Kela HL

Kansallinen PHR: auktorisointimallit ja OAuth 2. 0 -protokollan soveltamisopas Konstantin Hyppönen, Kanta-palvelut, Kela HL 7 Personal Health SIG 24. 8. 2016 Huom. DRAFT

Kanta-palvelut Julkiset palveluntuottajat Sairaanhoitopiirit (20) Lääketietokanta Perus-TH (192) Reseptikeskus Potilastiedon arkisto Palvelutapahtumat Apteekit (~800)

Kanta-palvelut Julkiset palveluntuottajat Sairaanhoitopiirit (20) Lääketietokanta Perus-TH (192) Reseptikeskus Potilastiedon arkisto Palvelutapahtumat Apteekit (~800) Ruotsin ep. SOS-yhteyspiste Yhteys suljettu pilotin jälkeen Yli 18 v Omakanta Vanhat asiakirjat Potilaan keskeiset terveystiedot (koosteet) Potilaan tiedonhallintapalvelu ep. SOS NCP Kelain Diagnoosit Muut koosteet Suostumukset ja kiellot Tahdonilmaisut, kuten hoitotahto Potilaan omat tiedot Sosiaalihuollon asiakastiedon arkisto Sosiaalihuollon palveluntuottajat Asiakasasiakirjat Asiakkuudet Vanhat asiakirjat Tekniset standardit HL 7 V 3: CDA R 2 taso 3 ja Medical Records HL 7 FHIR DSTU 2 (PHR) JSON, XHTML (PHR ja sh-arkisto) PDF/A (vanhat tiedot ja sh-arkisto) IHE IT-I Profiles (Kuva-arkistossa) W 3 C XML DSig WS Addressing, WS-I TLS, X. 509 Riskit Suostumuksenhallinta ja tahdonilmaisut Omatietovaranto (PHR) Appsit Lokit Kuvaarkisto Lokit Hoitoasiakirjat Kanta-viestinvälitys SOTE-ammattilaiset • • Toimitukset Uusimiset Yksityiset palveluntuottajat (4000) Kansalaiset (> 5 000) Lääkemääräykset Koosteiden palautus Asiat Lokit Muut kansalliset palvelut Koodistopalvelu Lomakerakenteet Ka. PA Koodistot ja terminologiat Apteekkirekisteri Varmennepalvelut SOTE-organisaatiorekisteri TH- ja SH-ammattilaisten rekisterit

Miksi auktorisointi? § Autentikointi: käyttäjän (kuten kansalaisen) tai sanomaliikenteen osapuolen (kuten potilastietojärjestelmän) tunnistus §

Miksi auktorisointi? § Autentikointi: käyttäjän (kuten kansalaisen) tai sanomaliikenteen osapuolen (kuten potilastietojärjestelmän) tunnistus § § Tarpeet PHR: ssä: varmistetaan, että kansalainen, soteammattilainen tai PHR-sovellus on tunnistettu riittävän vahvasti Auktorisointi: tiettyyn toimintoon valtuuttaminen tai aiemmin annetun valtuutuksen tarkistus § § Tarpeet PHR: ssä: varmistetaan, että kansalainen on antanut PHR-sovellukselle luvan käyttää (lukea/kirjoittaa) PHR-tietoja. SOTE-ammattilaisten osalta lupakäytäntö perustuu kansalaisen antamaan suostumukseen. Muut sovellukset kansalainen ”kytkee” PHR-terveystiliinsä itse. 3

Omakannan Omatietovarannon pääelementtejä Auktorisointipalvelin PHR: ää hyödyntävät sovellukset, mm. appsit Sallittujen sovellusten rekisteri Auktorisointikäyttöliittymä

Omakannan Omatietovarannon pääelementtejä Auktorisointipalvelin PHR: ää hyödyntävät sovellukset, mm. appsit Sallittujen sovellusten rekisteri Auktorisointikäyttöliittymä kansalaiselle OAuth 2. 0 -endpointit eli rajapinnat Ylläpitäjälle tarkoitettu käyttöliittymä Pseudonymiso intipalvelu Luvat ja tokenit Suomi. fitunnistaminen Suomi. fiasiointivaltuudet Kelan henkilötietopalvelu Omakannan käyttöliittymä Resurssipalvelin FHIRrajapinnat Varsinaiset PHR-tiedot Näkymät kansalaisille 4

Auktorisointiprotokollien suunnittelun lähtökohdat § OAuth 2. 0 -frameworkkiä on käytetty muissakin FHIR-pohjaisissa toteutuksissa, on

Auktorisointiprotokollien suunnittelun lähtökohdat § OAuth 2. 0 -frameworkkiä on käytetty muissakin FHIR-pohjaisissa toteutuksissa, on syytä huomioida aikaisemmin tehty työ. § § § OAuth 2. 0 on melko lavea framework, ei ole mahdollisuutta olla yhteensopivia ”kaikkien kanssa”. Valinta: pitää tukea myös natiiviappseja jotka kommunikoivat suoraan PHR: n kanssa. § § § SMART-on-FHIR Argonaut Mitren VA: lle tekemät profiilit Muut soveltamisoppaat, esim. Open. ID Connect ja lukuisat RFC: t ja niiden luonnokset, joissa on runsaasti OAuth 2. 0 -soveltamisoppaita Olemassa olevissa soveltamisoppaissa tätä ei yleensä tueta Olemassa olevat soveltamisoppaat ovat yleensä ammattilaissovelluksiin OAuth 2. 0 -valtuutustyypeistä (authorization grant) on käytössä vain yksi, authorization code. 5

PHR: ää hyödyntävien sovellusten tyypit § § 1. Public client for personal use Natiivisovellus.

PHR: ää hyödyntävien sovellusten tyypit § § 1. Public client for personal use Natiivisovellus. Käyttäjä lataa appsin sovelluskaupasta ja asentaa appsin instanssin mobiililaitteeseen Public client for personal use User Web browser Authorization server User authentication server Resource server 6

PHR: ää hyödyntävien sovellusten tyypit § § 2. Confidential client for personal use Palvelimelle

PHR: ää hyödyntävien sovellusten tyypit § § 2. Confidential client for personal use Palvelimelle asennettava sovellus, esimerkiksi nettipalvelu, joka on suunnattu kansalaisille. Web browser Confidential client for personal use User Authorization server Resource server User authentication server

PHR: ää hyödyntävien sovellusten tyypit § § 3. Client for professional use SOTE-ammattilaisen käyttämä

PHR: ää hyödyntävien sovellusten tyypit § § 3. Client for professional use SOTE-ammattilaisen käyttämä sovellus, joka voi olla esim. osana potilastietojärjestelmää. Web browser or app User authentication server Professional rights server Client for professional use Authorization server Resource server

Sovellusten ja sovellusinstanssien rekisteröinnin periaatteet § § Sovellus = client software Sovellusinstanssi = client

Sovellusten ja sovellusinstanssien rekisteröinnin periaatteet § § Sovellus = client software Sovellusinstanssi = client instance Käytännöt vaihtelee sovellustyypeittäin Public client for personal use (natiiviappsit): § § § Confidential client for personal use ja Client for professional use: § § Kela rekisteröi sovelluksen PHR: ään Sovelluksen käyttäjä eli kansalainen rekisteröi sovellusinstanssin PHR: ään kun ottaa sen käyttöön ja liittää sen omaan terveystiliinsä (auktorisoi sovellusinstanssin käyttämään omaa terveystiliään) Kela rekisteröi sovellusinstanssin PHR: ään Sovelluksia ei rekisteröidä PHR: ään ohjelmistotuotteina Yhteisliittymisen tai välityspalveluiden käyttöä ei ole suljettu pois mutta ei myöskään vielä määritelty tarkemmalle tasolle. Hiekkalaatikossa rekisteröinti on self-service-periaatteella (rekisteröidy itse ja rekisteröi oma sovellus) 9

Tarkoittaa siis sovelluskehittäjää

Tarkoittaa siis sovelluskehittäjää

Käyttäjä kirjautunut OAuth-palvelimelle, rekisteröi oman client-sovelluksen 1/3

Käyttäjä kirjautunut OAuth-palvelimelle, rekisteröi oman client-sovelluksen 1/3

Käyttäjä kirjautunut OAuth-palvelimelle, rekisteröi oman client-sovelluksen 2/3

Käyttäjä kirjautunut OAuth-palvelimelle, rekisteröi oman client-sovelluksen 2/3

Käyttäjä kirjautunut OAuth-palvelimelle, rekisteröi oman client-sovelluksen 3/3

Käyttäjä kirjautunut OAuth-palvelimelle, rekisteröi oman client-sovelluksen 3/3

Mitä tietoja tarvitaan rekisteröintivaiheessa? Public client for personal use § Client name § §

Mitä tietoja tarvitaan rekisteröintivaiheessa? Public client for personal use § Client name § § Client id § § URI, johon auktorisointipalvelin ohjaa selaimen auktorisoinnin jälkeen Application logo § § Sovelluksen yksilöintitunnus, voi olla vaikkapa satunnainen UUID. Myös Kela voi antaa tunnuksen sovellukselle. Hiekkalaatikossa säyttöliittymä generoi sen. Redirect URI § § Markkinointinimi, näkyy myös käyttäjälle eri paikoissa (soveluskauppa, Omakanta, sovellusluettelo kanta. fi: ssä) Näytetään käyttäjälle auktorisointivaiheessa, oltava sama kuin sovelluskaupassa oleva logo. Scopes § Mihin PHR-tietoihin tarvitaan oikeuksia (ja mitä oikeuksia). Toimii resurssityypeittäin + joukko teknisiä scopeja. § Yhteystiedot ja muut hallinnolliset tiedot Rekisteröinnin jälkeen sovelluskehittäjä saa initial access tokenin, jota käytetään sovellusinstanssien rekisteröintiin. 14

Mitä tietoja tarvitaan rekisteröintivaiheessa? Confidential client for personal use § Samat kuin edellisellä +

Mitä tietoja tarvitaan rekisteröintivaiheessa? Confidential client for personal use § Samat kuin edellisellä + § Backend certificate (OID riittää rekisteröintivaiheessa) § TLS-varmenne (myöntäjänä VRK) § Rekisteröinnin jälkeen sovelluskehittäjä saa salasanan (client_secret). Client for professional use § Samat kuin edellisellä, paitsi logoa ja redirect URIa ei tarvita § Pääsynhallinta kansalaisen terveystiliin suostumuksen eikä kansalaisen suorittaman liittämisen kautta 15

Sovellusinstanssin rekisteröinti § § Vain natiiviappseille (public client for personal use) Rekisteröinnin jälkeen sovelluskehittäjä

Sovellusinstanssin rekisteröinti § § Vain natiiviappseille (public client for personal use) Rekisteröinnin jälkeen sovelluskehittäjä saa niin sanotun initial access tokenin, joka on sama kaikilla sovelluksen instansseilla. 16

Sovellusinstanssin rekisteröinti § Instanssi generoi itselleen avainparin. Yksityinen avain pitää tallentaa laitteen turvamuistiin. Name

Sovellusinstanssin rekisteröinti § Instanssi generoi itselleen avainparin. Yksityinen avain pitää tallentaa laitteen turvamuistiin. Name kid Meaning Key type Public key use Algorithm Key ID n Modulus e Public RSA key exponent kty use alg Cardinality Value "RSA" required "sig" required "RS 256" required Key pair generation date and time, formatted according to the ISO 8601 standard, with UTC as the time zone. Example: "2017 -0921 T 12: 13: 14 Z". required The modulus for both the public and private keys required The public key exponent 17

Sovellusinstanssin rekisteröinti § Instanssi generoi itselleen software statementin ja allekirjoittaa sen omalla yksityisellä avaimellaan.

Sovellusinstanssin rekisteröinti § Instanssi generoi itselleen software statementin ja allekirjoittaa sen omalla yksityisellä avaimellaan. Name client_name software_id jwks client_secret Meaning Application name Application ID JSON web key set Initial access token Cardinality Value required Application name that MUST match the one provided in the client registration. required Application ID that MUST match the one provided in the client registration. required JSON web key set containing the public key generated by the client instance. required The initial access token that MUST match the one provided by Kela to the software vendor upon client registration. 18

Software statement: esimerkki { "client_name": "Example PHR Client", "software_id": "9 ce 60 ce 2

Software statement: esimerkki { "client_name": "Example PHR Client", "software_id": "9 ce 60 ce 2 -5 ae 1 -11 e 6 -8 b 77 -86 f 30 ca 893 d 3", "jwks": {"keys": [{ "e": "AQAB", "n": "uh. SLGXCUr. E 0 Mub 5 l. QZy 0_w 8 tq 2 q. CBNcx. Ex. P 02 XPy. K 9 Ifxkbn. HVu. VPm. Ey. Jn 7 Xtz. Xq. ZVCmgy 0 k. J_QTxk. Nod. AQ 73 Wp u. JQfo 8 yf 8 q. Vfs. VSXJz 0 Jqvze. Ige. RPm. MQMLXNUh 6 p. Zaq. Txgd 0 R 6 L 8 yq. KJRy 71 WW 5 u. Jytf 3 F 9 Y 0 b. WXy. Xmxbr. Axf 3 u. R mdo. Cx 4 h_o 7 x 8 mktj 8 Uaab. Au_n. Nq. QGv_Bg. A 4 j. EI_Mo. AHFewdiinq. THb. Smy. BWd 5 k. Mr. Wqbh. V_ftl. O 1 Qd. TFKCx. Eczn. Yb 4 CDy. WBk. Qs. E 7 EHcw. Atu. ZYt. Of. NFo. W_sz 2 yk. Wih. C 2 h. O 9 u. JZZnswn. H 27 ZALoau 7 L ZUTPo. Wu. At 1 a. MEZYKKw", "kty": "RSA", "use": "sig", "alg": "RS 256", "kid": "2017 -09 -21 T 12: 13: 14 Z" }]}, "client_secret": "Kw. Yfv. MFLFw 2 XLJNCHy. Ftd. HKck 8 X 69 C 2 X" } 19

Rekisteröintikutsu: esimerkki POST /register HTTP/1. 1 Content-Type: application/json Accept: application/json Host: phrauth. kanta. fi

Rekisteröintikutsu: esimerkki POST /register HTTP/1. 1 Content-Type: application/json Accept: application/json Host: phrauth. kanta. fi { "software_statement": "ey. Jhb. Gci. Oi. JSUz. I 1 Ni. J 9. ey. Jjb. Gllbn. Rfbm. Ft. ZSI 6 Ik. V 4 YW 1 wb. GUg. UEh. SIENsa. WVud. CIs. In. Nv. Zn. R 3 YXJl. X 2 lk. Ijoi. OWNl. Nj. Bj. ZTIt. NWFl. MS 0 x. MWU 2 LThi Nzct. ODZm. Mz. Bj. YTg 5 M 2 Qz. Iiwiandrcy. I 6 ey. Jr. ZXlz. Ijog. W 3 si. ZSI 6 Ik. FRQUIi. LCJu. Ijoid. Wh. TTEd. YQ 1 Vy. RTBNd. WI 1 b. FFae. TBf dzh 0 c. TJx. Q 0 JOY 3 h. Fe. FAw. Mlh. Qe. Us 5 SWZ 4 a 2 Ju. SFZ 1 Vl. Bt. RXl. Kbjd. Yd. Hp. Yc. Vp. WQ 21 ne. TBr. Sl 9 RVHhr. Tm 9 k. QVE 3 M 1 dwd. Up. RZm 84 e. WY 4 c. VZmc 1 ZTWEp 6 MEpxdnpl. SWdl. Ul. Bt. TVFNTFh. OVWg 2 c. Fphc. VR 4 Z 2 Qw. Uj. ZMOHlx. S 0 p. Se. Tcx. V 1 c 1 d. Up 5 d. GYz. Rjl. ZMGJXWHl. Y b. Xhick. F 4 Zj. N 1 Um 1 kb 0 N 4 NGhfbzd 4 OG 1 rd. Go 4 VWFh. Yk. F 1 X 25 Oc. VFHdl 9 CZ 0 E 0 ak. VJX 01 v. QUh. GZXdka. Wluc. VRIYl. Nte. UJXZC 01 a 01 y. V 3 Fia. FZf. Zn. Rs. Tz. FRZFRGS 0 N 4 RWN 6 blli. NENEe. Vd. Ca 1 Fz. RTd. FSGN 3 QXR 1 Wll 0 T 2 ZORm 9 XX 3 N 6 Mnlr. V 2 lo. Qz. Jo. Tzl 1 Slpa bn. N 3 bkgy. N 1 p. BTG 9 hd. Td. MWl. VUUG 9 Xd. UF 0 MWFNRVp. ZS 0 t 3 Iiwia 3 R 5 Ijoi. Ul. NBIiwid. XNl. Ijoic 2 ln. Iiwi. YWxn. Ijoi. Ul. My. NTYi LCJra. WQi. Oi. Iy. MDE 3 LTA 5 LTIx. VDEy. Oj. Ez. Oj. E 0 Wi. J 9 XX 0 s. Im. Nsa. WVud. F 9 z. ZWNy. ZXQi. Oi. JLd 1 lmdk 1 GTEZ 3 Mlh. MSk 5 DSHl. Gd. GRI S 2 Nr. OFg 2 OUMy. WCJ 9. GHf. L 4 QNIr. Qw. L 18 BSRd. E 595 T 9 jbzqa 06 R 9 BT 8 w 409 x 9 o. Ic. Ka. Zo_mt 15 ri. EXHazd. ISUv. DIZhtiy. Nr. SHQ 8 K 4 Tvq. Wx. H 6 u. Jgcmood Zd. Pwm. WRIEYb. QDLq. PNx. REt. Yn 05 X 3 AR 7 ia 4 FRj. Q 2 oj. Zjk 5 f. Jq. Jd. Q-Jcfxyh. KP 8 BAWBd 6 I 2 LLA 77 IG 32 xtbhx. Yf. HX 7 Vhu. U 5 Pro. JO 8 uvu 3 Ayv 4 XRh. LZJY 4 y. Kfmyjii. Ki. PNe. Ia 4 SMy_d_QSWxsk. U 5 XIQl 5 Sa 2 YRPMb. DRXttm 2 Tfn. ZM 1 xx 70 Do. Yi 8 g 6 czz. CPGRi 4 SW_S 2 RKHIJf. Ijo. I 3 z. TJ 0 Y 2 oe 0_EJAi. Xb. L 6 Oy. F 9 S 5 t. Kx. DXV 8 JInd. SA" } Allekirjoituksena JSON Web Signature (JWS) 20

Rekisteröintikutsu: vastaus HTTP/1. 1 201 Created Content-Type: application/json Cache-Control: no-store Pragma: no-cache { "client_id":

Rekisteröintikutsu: vastaus HTTP/1. 1 201 Created Content-Type: application/json Cache-Control: no-store Pragma: no-cache { "client_id": "8 d 415 da 7 -bec 9 -44 a 3 -8979 -105 ea 5 bf 8 ee 4", "client_id_issued_at": 1505995995, "grant_types": ["authorization_code", "refresh_token"], "software_id": "9 ce 60 ce 2 -5 ae 1 -11 e 6 -8 b 77 -86 f 30 ca 893 d 3", "client_name": "Example PHR Client", "token_endpoint_auth_method": "private_key_jwt" } 21

Authorization endpointin käyttö Kaksi eri skenaariota: § Kansalaisen omaan käyttöön tarkoitetut sovellukset (public client

Authorization endpointin käyttö Kaksi eri skenaariota: § Kansalaisen omaan käyttöön tarkoitetut sovellukset (public client for personal use ja confidential client for personal use) § § Kansalainen kytkee sovelluksen omaan terveystiliinsä. Vaatii tunnistautumista (Suomi. fi) ja sovellukselle annettavien oikeuksien (scopes) hyväksymistä. SOTE-ammattilaisen käyttöön tarkoitetut sovellukset § § § Ei käytetä authorization endpointia, käyttäjän autentikointi ja auktorisointi on liittyjätahon vastuulla. Autentikoinnin ja auktorisoinnin voi toteuttaa joko sovellus itse tai sovelluksen käyttämä auktorisointipalvelin. Sovellus pääsee hakemaan kansalaisen PHR-tietoja jos kansalainen on antanut tähän suostumuksen Omakannassa. Suostumuksen toimintamallia ei ole vielä kuvattu lainsäädännön tasolla, lakiteksti on työn alla. 22

0 App Käyttäjä on ladannut appsin sovelluskaupasta ja käynnistänyt sen ja sovellusinstanssi on rekisteröity

0 App Käyttäjä on ladannut appsin sovelluskaupasta ja käynnistänyt sen ja sovellusinstanssi on rekisteröity tai käyttäjä on avannut selainpohjaisen käyttöliittymän 1 Selain Siirry tekemään appsin auktorisointia ja liittämistä 2 Hae auktorisointi- ja liittymissivu 5 Näytä mitä resurssityyppejä App tarvitsee, hyväksytä nämä käyttäjällä 10 Siirry Appsiin ja välitä Appsille authorization code 11 Hae tokenit esittämällä authorization code 9 Ohjaa selain Redirect URI -osoitteeseen authorization coden kanssa Appin backend (valinnainen) 3 Siirry tekemään käyttäjän tunnistusta Sovelluksen tiedot: - Nimi - Redirect URI - Logo - Resurssityypit ja sallitut operaatiot 4 Käyttäjä tunnistettu Sallittujen sovellusten rekisteri 6 Käyttäjä on hyväksynyt ehdot Auktorisointipalvelin ja sen käyttöliittymä 7 Siirry valitsemaan puolesta asioitavat 8 Valittujen puolesta asioitavien lista Suomi. fitunnistuspalvelu ja sen käyttöliittymä Suomi. fiasiointivaltuudetpalvelu ja sen käyttöliittymä 12 Palauta Access token, Refresh token, Identity token (jälkimmäisessä käyttäjän ja puolesta asioitavien yksilöinti- ja nimitiedot) 13 Hae ja tallenna tietoja esittämällä access token ja identity token interaktioiden yhteydessä Haku tai tallennus OK, jos access token on voimassa Resurssipalvelin 14 Sovellustietojen haku Tallennettujen tietojen haku Omakannan käyttöliittymä Käyttäjä näkee tallennetut tiedot ja liitetyt sovellukset

Authorization endpoint: kutsu § § Sovellus hakee auktorisointikoodin, jolla voi myöhemmin hakea tokeneita token

Authorization endpoint: kutsu § § Sovellus hakee auktorisointikoodin, jolla voi myöhemmin hakea tokeneita token endpointista Koodi on voimassa 5 minuuttia. Name response_type client_id Cardinality required redirect_uri required scope optional state required Value "code" The identifier of the client instance. For confidential clients, the id is provided in the client registration process, and for public clients the id is generated through dynamic registration of instances at the registration endpoint. Must match the URI registered for the client software at the registration time. The scopes that the client requests to be granted, separated using the + character. Scopes are defined in Section 8. If the value is skipped or empty, the authorization server will assume that the client is requesting all scopes registered for it. The client MUST generate an unpredictable state parameter with at least 128 bits of entropy for each user session. The authorization server will include the state value when redirecting the user-agent to the redirect URI. The client MUST validate the state value for any request sent to its redirect URI.

Authorization endpoint: kutsu ja vastaus Kutsu: Location: https: //phrauth. kanta. fi/authorize? response_type=code&clien t_id=8 d

Authorization endpoint: kutsu ja vastaus Kutsu: Location: https: //phrauth. kanta. fi/authorize? response_type=code&clien t_id=8 d 415 da 7 -bec 9 -44 a 3 -8979105 ea 5 bf 8 ee 4&redirect_uri=fi. sw-vendor. app%3 A%2 Fafter-auth& scope=patient%2 FObservation. read+ patient%2 FObservation. write+openid&state=adfh 56 kiwshti 2 k 4 Vastaus (redirect): Location: fi. sw-vendor. app: /afterauth? code=ahui 560 zxs 12 n 3 dq&state=adfh 56 kiwshti 2 k Redirect URL State-arvo oltava sama kuin kutsussa 25

Pseudonymisointi § PHR ei palauta PHR-sovelluksille kansalaisen henkilötunnusta. Henkilötunnuksen sijasta käytetään pseudonyymejä. § §

Pseudonymisointi § PHR ei palauta PHR-sovelluksille kansalaisen henkilötunnusta. Henkilötunnuksen sijasta käytetään pseudonyymejä. § § Keskustellaan muun muassa tästä, vaikuttaako tarpeelliselta. Natiiviappseissa henkilötunnus ei ole tarpeellinen ja sen käsittelyyn liittyy tietoturvariskejä Confidential client -tyyppisillä sovelluksilla henkilötunnus on muutenkin tiedossa, jos käyttäjä on vahvasti tunnistautunut tai henkilötunnus on sote-ammattilaisen tiedossa Pseudonyymit ovat satunnaisia UUID-tunnuksia. Auktorisointipalvelin ylläpitää listan vastaavuuksista. Pseudonyymin saa token endpointista access tokenin yhteydessä. 26

Mitä loppukäyttäjälle näytetään Tuotannossa ja AT: ssä käytetään Suomi. fitunnistamista, hiekkalaatikossa salasanapohjaista autentikointia. 27

Mitä loppukäyttäjälle näytetään Tuotannossa ja AT: ssä käytetään Suomi. fitunnistamista, hiekkalaatikossa salasanapohjaista autentikointia. 27

Mitä loppukäyttäjälle näytetään Näihin tulee järkevämpiä ja suomenkielisiä tekstejä Sovellus pyytää luvan käyttää Omakannan

Mitä loppukäyttäjälle näytetään Näihin tulee järkevämpiä ja suomenkielisiä tekstejä Sovellus pyytää luvan käyttää Omakannan omatietovarantoa yllä listatuilla käyttöoikeuksilla. Annatko luvan? Luvan voi peruuttaa milloin tahansa Omakannassa. 28

Hiekkalaatikossa luvituksia pääsee tarkastelemaan käyttöliittymän kautta Asiakastesti- ja tuotantoympäristöissä kansalaiset voivat tarkastella annettuja lupia

Hiekkalaatikossa luvituksia pääsee tarkastelemaan käyttöliittymän kautta Asiakastesti- ja tuotantoympäristöissä kansalaiset voivat tarkastella annettuja lupia Omakannassa 29

Token endpoint § Token endpointista sovellus saa kolme tokenia: § § § Access token

Token endpoint § Token endpointista sovellus saa kolme tokenia: § § § Access token – mahdollistaa resurssipalvelimen käytön. Voimassaolo: 1 tunti. Refresh token – mahdollistaa uuden access tokenin ja refresh tokenin haun. Voimassaolo: 6 kuukautta natiiviappseilla, pidempi voimassaolo (3 vuotta? ) confidential clienteilla. ID token – sisältää perustiedot käyttäjästä. Lisää tietoja voi hakea openid endpointista. Voimassaolo: 1 tunti. 30

Autentikointi token endpointissa § Natiivisovellukset autentikoituvat token endpointissa itse allekirjoitetulla JWT-tokenilla Name iss sub

Autentikointi token endpointissa § Natiivisovellukset autentikoituvat token endpointissa itse allekirjoitetulla JWT-tokenilla Name iss sub aud Meaning Issuer Subject Audience Cardinality required exp Expiration time required jti JWT ID required kid Key id required iat Issued at optional Value client_id of the client instance The URL of the authorization server's token endpoint (the same URL to which this authentication JWT will be posted) The time on or after which the authentication JWT MUST NOT be accepted for processing. The time MUST be expressed in seconds since the "Epoch" (1970 -01 -01 T 00: 00 Z UTC). This time MUST be no more than 5 (five) minutes in the future. A unique identifier (nonce) of this authentication JWT. MUST have at least 128 bits of entropy and MUST NOT be reused in another token. The authorization server SHALL check for reuse of jti values and SHALL reject all tokens issued with duplicate jti values. Key id of the key pair used to digitally sign this token. MUST match the value supplied with the software statement used during the client instance registration process. The time on which the authentication JWT was generated. 31

Autentikointi token endpointissa § Esimerkki: { "iss": "8 d 415 da 7 -bec 9

Autentikointi token endpointissa § Esimerkki: { "iss": "8 d 415 da 7 -bec 9 -44 a 3 -8979 -105 ea 5 bf 8 ee 4", "sub": "8 d 415 da 7 -bec 9 -44 a 3 -8979 -105 ea 5 bf 8 ee 4", "aud": "https: //phrauth. kanta. fi/token", "jti": "a 9 sk 105 fpwqn 2 n 20", "iat": 1505996055, "exp": 1505996355, "kid": "2017 -09 -21 T 12: 13: 14 Z" } JWT token on allekirjoitettu JSON Web Signature (JWS) -määrittelyn mukaisesti 32

Autentikointi token endpointissa § Confidential client for personal use -tyyppiset sovellukset autentikoituvat § §

Autentikointi token endpointissa § Confidential client for personal use -tyyppiset sovellukset autentikoituvat § § Kahdensuuntaisella TLS: llä sekä HTTP Basic Authentication -menetelmällä (client_secret annetaan sovelluskehittäjälle rekisteröintivaiheessa). Authorization: Basic OGQ 0 MTVk. YTct. Ym. Vj. O. . LY 2 s 4 WDY 5 Qz. JY Base 64(client_id+": "+client_secret) 33

Tokeneiden haku: kysely Name grant_type code Cardinality required redirect_uri client_assertion_type required conditional Value "authorization_code"

Tokeneiden haku: kysely Name grant_type code Cardinality required redirect_uri client_assertion_type required conditional Value "authorization_code" The short-lived authorization code received from the authorization server. MUST match the URI used in the authorization request. Required for public clients, with fixed value "urn: ietf: params: oauth: client-assertiontype: jwt-bearer". Omit for confidential clients. client_assertion conditional Required for public clients. The value is a signed authentication JWT as described in Section 5. 2. 1. Omit for confidential clients. POST /token HTTP/1. 1 Host: phrauth. kanta. fi Content-Type: application/x-www-form-urlencoded grant_type=authorization_code&code=ahui 560 zxs 12 n 3 dq& client_id=8 d 415 da 7 -bec 9 -44 a 3 -8979 -105 ea 5 bf 8 ee 4& redirect_uri=fi. sw-vendor. app%3 A%2 Fafter-auth& client_assertion_type=urn%3 Aietf%3 Aparams%3 Aoauth%3 Aclient-assertion-type%3 Ajwt-bearer& client_assertion=ey. Jhb. Gci. Oi. JSUz. . . ZT 34

Tokeneiden haku: vastaus Name access_token_type expires_in Cardinality required scope state id_token refresh_token required optional

Tokeneiden haku: vastaus Name access_token_type expires_in Cardinality required scope state id_token refresh_token required optional required Value The access token issued by the authorization server Fixed value: Bearer Lifetime in seconds of the access token, after which the token SHALL NOT be accepted by the resource server Scope of access authorized. The exact value received from the client in the authorization request Authenticated patient identity and profile, if requested Token that can be used to obtain a new access token { "access_token": "ey. Jhb. Gci. Oi. JSU. . . 8 h 0 e. Q", "token_type": "Bearer", "expires_in": 3599, "scope": "patient/Observation. read+patient/Observation. write+openid", "refresh_token": "ey. Jhb. Gci. Oi. JSUz. I 1 Ni. I. . . ZGFicm. E=", "id_token": "ey. Jhb. Gci. Oi. JSUz. I 1 Ni. I. . . ESL 0 e. IX 7 eg 1_DA", "state": "adfh 56 kiwshti 2 k 4" } 35

Resurssien haku ja tallennus § § Voimassa oleva access token esitetään aina resurssipalvelimelle lähetettävien

Resurssien haku ja tallennus § § Voimassa oleva access token esitetään aina resurssipalvelimelle lähetettävien kutsujen yhteydessä. Natiivisovellukset esittävät lisäksi Authentication JWT -tokenin (sen tarkoituksena on access tokenin omistajan identiteetin varmistus) GET https: //phr. kanta. fi/Observation/123 Authorization: Bearer ey. Jhb. Gci. Oi. JSU. . . 8 h 0 e. Q X-Auth-Token: ey. Jhb. Gci. Oi. JSU. . . t. Kx. DXV 8 JInd. SA 36

SOTE-ammattilaisen käyttöön tarkoitetut sovellukset § § Sovellus voi olla esimerkiksi potilastietojärjestelmän PHR-moduuli tai potilastietojärjestelmään

SOTE-ammattilaisen käyttöön tarkoitetut sovellukset § § Sovellus voi olla esimerkiksi potilastietojärjestelmän PHR-moduuli tai potilastietojärjestelmään löyhästi integroitu Smart-on-FHIR sovellus Ammattilaissovelluksesta liikennöinti PHR: ään tapahtuu aina luotetun palvelimen kautta § § Mobiili-, työpöytä- tai selainsovellukset (HTML 5/JS) eivät voi liittyä suoraan PHR: ään Liittyminen tapahtuu liittyvän tahon auktorisointipalvelimen kautta. 37

SOTE-ammattilaisen käyttöön tarkoitetut sovellukset § Sovelluksen tai sovelluksen käyttämän auktorisointipalvelimen vastuulla on § §

SOTE-ammattilaisen käyttöön tarkoitetut sovellukset § Sovelluksen tai sovelluksen käyttämän auktorisointipalvelimen vastuulla on § § § Käyttäjän tunnistaminen Ammattioikeuksien tarkistaminen Mahdollinen SMART-on-FHIR launch-sekvenssin tuki Kommunikointi PHR-auktorisointipalvelimen kanssa Ammattilaisapplikaatioiden osalta käytetään Argonaut-projektissa tuotettua cross organization data access profiilia, johon tehdään täsmennykset PHR: n tarpeisiin. 38

SOTE-ammattilaisen käyttöön tarkoitetut sovellukset EHR-B: n roolissa on PHR https: //github. com/smart-on-fhir. github. io/wiki/cross-organizational-auth

SOTE-ammattilaisen käyttöön tarkoitetut sovellukset EHR-B: n roolissa on PHR https: //github. com/smart-on-fhir. github. io/wiki/cross-organizational-auth 39

https: //github. com/smart-on-fhir. github. io/wiki/cross-organizational-auth 40

https: //github. com/smart-on-fhir. github. io/wiki/cross-organizational-auth 40

Authorization JWT Claim iss sub Priority REQUIRED Argonaut-projektissa Requesting EHR's issuer URI. EHR-A's id

Authorization JWT Claim iss sub Priority REQUIRED Argonaut-projektissa Requesting EHR's issuer URI. EHR-A's id for the user on whose behalf this request is being made. Matches requesting_practitioner. id Level of assurance of the requesting user's identity (e. g. NIST level 0 -4, as defined in NIST SP 800 -63 -2) PHR: ssä client_id Rekisteröintinumero (Terhikki/Suosikki) acr REQUIRED aud REQUIRED PHR-auktorisointipalvelimen URL REQUIRED EHR-B authorization server's token_URL (the URL to which this authorization JWT will be posted) The FHIR patient resource being requested_reco rd requested_scop es requesting_pra ctitioner reason_for_req uest REQUIRED Patient data being requested Ei pakolinen REQUIRED FHIR practitioner resource making the request Ammattihenkilön nimi- ja yksilöintiedot REQUIRED Purpose for which access is being requested Ei vaadita. Jos osoittautuu myöhemmin tarpeelliseksi tätä varten tulisi luoda koodisto jossa määritelty haun syyt exp REQUIRED kid REQUIRED Expiration time integer after which this authorization JWT MUST be considered invalid; expressed in seconds since the "Epoch" (1970 -01 -01 T 00: 00 Z UTC). This time MUST be no more than five minutes in the future. Key id of the encryption key used to digitally sign this token jti REQUIRED A nonce string value that uniquely identifies this authorization JWT. MUST have at least 128 bits of entropy and MUST NOT be reused in another token. EHR-B MUST check for reuse of jti values and MUST reject all tokens issued with duplicate jti values. iat REQUIRED The UTC time the JWT was created by EHR-A. 4 Hetu Allekirjoitukseen käytettävän varmenteen OID 41

Authentication JWT § § Käytännössä samat kentät kuin aiemmin esitetyssä mallissa Ei välttämätön, jos

Authentication JWT § § Käytännössä samat kentät kuin aiemmin esitetyssä mallissa Ei välttämätön, jos kaksisuuntainen TLS osoittautuu riittäväksi (riippuu käytettävästä liittymismallista) 42