Gå til hovedinnhold

Tykke klienter

Her kan du finne ut hvordan du skal autentisere brukerne av dine tykke klienter ved hjelp av HelseID.

Tykke klienter er programmer som kjører lokalt på datamaskinen din, som f.eks en Microsoft .NET WPF applikasjon.

Hvis du vil bruke HelseID for å autentisere brukerne av din tykke applikasjon må du først kontakte Norsk Helsenett som vil opprette en konfigurasjon som du må bruke i programkoden din.

Når du har fått konfigurasjonsdata fra HelseID kan du konfigurere applikasjonen din.

Hvilken Grant Type (protokollflyt) skal jeg bruke?

Når du autentiserer brukere i en tykk klient som f.eks Microsoft WPF applikasjon med OpenId Connect ønsker vi at du benytter en flyt som kalles Hybrid Flow. Denne flyten innebærer at din client i praksis bruker to flyter: implicit flow og authorization code flow.

Applikasjonen din gjør da to separate spørringer mot HelseID. Den første spørringen returnerer et id_token samt en kode. Koden brukes i den andre spørringen for å få tilbake et access_token. Du kan lese mer om de forskjellige flytene [her].

Klientbibliotek

Det finnes flere klientbibliotek som du kan bruke for å autentisere brukerne dine i HelseID. På OpenId Connect sine sider finner du en liste over sertifiserte bibliotek du kan bruke. Med mindre du har mye erfaring med å skrive sikkerhetskode bør du bruke ett av disse bibliotekene som er skrevet av profesjonelle sikkerhetsfolk. 

For moderne .net baserte Windows applikasjoner anbefaler vi at du benytter deg av et bibliotek som heter IdentityModel.OidcClient 2.0. Den finnes også som en nuget pakke som du finner her.

Hemmeligheter i tykke klienter

Vi kan ikke stole på at en tykk klient kan ta vare på sine hemmeligheter. Det er selvfølgelig mulig å bruke eller lage mekanismer som gjør det vanskeligere å stjele hemmelighetene, men generelt sett må vi anse hemmeligheter som brukes i tykke klienter som usikre.

Klientkonfigurasjon

Når du skal konfigurere din applikasjon bruker du informasjonen du har mottatt fra HelseID.

var options = new OidcClientOptions()
            {
                Authority = "https://helseid-sts.test.nhn.no/",
                ClientId = "din_client_id",
                RedirectUri = "https://din-redirect-uri/",
                Scope = "openid profile",
                ClientSecret = "en ikke så hemmelig hemmelighet"                
            };

var client = new OidcClient(options);
var state = await client.PrepareLoginAsync();

Eksempelet over bruker IdentityModel.OidcClient som klientbibliotek. Du finner full eksempelkode for WPF og andre tykke klienter her.

Hvordan får jeg tak i mine tokens? 

OpenId Connect baserer seg på nettleserteknologi for å utføre autentisering, så selv om du lager en tykk klient må den bruke nettleser for å utføre innlogging av brukerne.

Dette kan løses med en hvilken som helst nettleserkomponent, men dersom du ønsker SSO mellom din tykke klient og andre applikasjoner er anbefalingen at du bruker systemnettleseren.

På grunn av at applikasjonen din må bruke nettleseren til innlogging må den lytte til hendelser som oppstår i nettleseren eller nettleserkomponenten du bruker. Detaljene rundt implementasjonen av dette er avhengig av hvilken nettleser eller nettleserkomponent du bruker, og om ditt klientbibliotek håndterer kommunikasjonen med nettleseren for deg eller om du gjør det manuelt.

Du kan lese litt om hvordan dette fungerer når man ønsker SSO mellom tykke klienter og andre applikasjoner på denne siden.