Naviger til forside. Bilde av Dfind Consulting logo

26.04.2024

4 min

Tilgangsstyring, med Duende IdentityServer (BlockContent)

Bilde av artikkel forfatter

Torkel Nes

Systemutvikler

Intro

It sikkerhet har de siste årene vært et et tema med økt fokus og relevans. Når vi jobber med systemutvikling er det derfor viktig å håndtere tilgangsstyring på en sikker måte, med gode rammeverk og hjelpemidler. Autentisering (hvem er du) og Autorisering (hva har du lov til) er to aspekter som kan håndteres med Duende IdentityServer.

1// Hello World! program
2namespace HelloWorld
3{
4  class Hello {         
5    static void Main(string[] args) {
6      System.Console.WriteLine("Hello World!");
7          System.Console.WriteLine("Hello World!");
8
9    }
10  }
11}

hei
I 2020 gikk identityServer fra å hovedsakelig være et open source produkt, av Dominick Baier and Brock Allen, til å bli tilbudt som et mer komplett produkt fra Duende Software, og benyttes i dag av en rekke store og små it-selskaper.

Bilde av natur test
Bilde av natur

For tilgangsstyring skiller vi gjerne mellom:

  • bruker-til-system access
  • maskin-til-maskin access

For bruker-til-system access har IdentityServer god støtte for flere typer innlogging. Dette kan for eksempel være brukernavn og passord, eller ved å integrere med IdPorten så brukere kan benytte BankId.
For maskin-til-maskin access gjør api'er kall til IdentityServer for å autentisere seg.

Når det gjørs et vellykket innlogging/autentiseringsforsøk til IdentityServer, blir det sendt et JWT bearerToken i response.

Hvis man vil se innholdet i et Bearer token kan man f.eks benytte JWT.io som har et grensesnitt for å se innholdet i bearertokens:

Bilde av fest
Bilde av fest

Dette vil resultere i at kall til endepunktet uten token, automatisk gir en HttpStatusCode 401 Unauthorized, siden man ikke har sendt med noe token, og ikke er autentisert.

Kall med token, men som ikke har scope som behøves, vil gi en HttpStatusCode 403 Forbidden, siden man er autentisert, men ikke har rettigheter til å be om data fra endepunktet.

Dette vil resultere i at kall til endepunktet uten token, automatisk gir en HttpStatusCode 401 Unauthorized, siden man ikke har sendt med noe token, og ikke er autentisert.

Kall med token, men som ikke har scope som behøves, vil gi en HttpStatusCode 403 Forbidden, siden man er autentisert, men ikke har rettigheter til å be om data fra endepunktet.

Dette vil resultere i at kall til endepunktet uten token, automatisk gir en HttpStatusCode 401 Unauthorized, siden man ikke har sendt med noe token, og ikke er autentisert.

Kall med token, men som ikke har scope som behøves, vil gi en HttpStatusCode 403 Forbidden, siden man er autentisert, men ikke har rettigheter til å be om data fra endepunktet.

Dette vil resultere i at kall til endepunktet uten token, automatisk gir en HttpStatusCode 401 Unauthorized, siden man ikke har sendt med noe token, og ikke er autentisert.

Kall med token, men som ikke har scope som behøves, vil gi en HttpStatusCode 403 Forbidden, siden man er autentisert, men ikke har rettigheter til å be om data fra endepunktet.

Dette vil resultere i at kall til endepunktet uten token, automatisk gir en HttpStatusCode 401 Unauthorized, siden man ikke har sendt med noe token, og ikke er autentisert.

Kall med token, men som ikke har scope som behøves, vil gi en HttpStatusCode 403 Forbidden, siden man er autentisert, men ikke har rettigheter til å be om data fra endepunktet.

Dette vil resultere i at kall til endepunktet uten token, automatisk gir en HttpStatusCode 401 Unauthorized, siden man ikke har sendt med noe token, og ikke er autentisert.

Kall med token, men som ikke har scope som behøves, vil gi en HttpStatusCode 403 Forbidden, siden man er autentisert, men ikke har rettigheter til å be om data fra endepunktet.

Dette vil resultere i at kall til endepunktet uten token, automatisk gir en HttpStatusCode 401 Unauthorized, siden man ikke har sendt med noe token, og ikke er autentisert.

Kall med token, men som ikke har scope som behøves, vil gi en HttpStatusCode 403 Forbidden, siden man er autentisert, men ikke har rettigheter til å be om data fra endepunktet.

Dette vil resultere i at kall til endepunktet uten token, automatisk gir en HttpStatusCode 401 Unauthorized, siden man ikke har sendt med noe token, og ikke er autentisert.

Kall med token, men som ikke har scope som behøves, vil gi en HttpStatusCode 403 Forbidden, siden man er autentisert, men ikke har rettigheter til å be om data fra endepunktet.

Dette vil resultere i at kall til endepunktet uten token, automatisk gir en HttpStatusCode 401 Unauthorized, siden man ikke har sendt med noe token, og ikke er autentisert.

Kall med token, men som ikke har scope som behøves, vil gi en HttpStatusCode 403 Forbidden, siden man er autentisert, men ikke har rettigheter til å be om data fra endepunktet.

Dette vil resultere i at kall til endepunktet uten token, automatisk gir en HttpStatusCode 401 Unauthorized, siden man ikke har sendt med noe token, og ikke er autentisert.