GithubHelp home page GithubHelp logo

folkehelseinstituttet / fhi.helseid Goto Github PK

View Code? Open in Web Editor NEW
6.0 6.0 5.0 577 KB

Fhi.HelseId component for accessing NHN HelseId

License: MIT License

C# 32.19% Python 0.09% Batchfile 0.03% GAP 0.01% HTML 67.68%

fhi.helseid's People

Contributors

austrheim avatar dependabot-preview[bot] avatar dependabot[bot] avatar fhiterjes avatar havard avatar marius-nhn avatar martinmine avatar martsve avatar mmalvik avatar osiristerje avatar roar-andersen avatar robin831 avatar robinbaxon avatar runegri avatar skuuk avatar toralux avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

fhi.helseid's Issues

Cache/optimalisering ved rollesjekk mot HPR

Ved å bruke rollesjekk mot HPR vil det gjøres et kall mot HPR hver gang denne middlewaren blir kjørt.

Dette kan føre til en mye trafikk mot HPR. Det burde være mulig å optimalisere/cache oppslag mot HPR dersom man ønsker det.

Dette kan være en feature man skrur på med IHprFeatureFlags f.eks og en angitt levetid på cache.

Støtte for påstand om organisasjonsnummer

HelseID kan tilby informasjon om virksomhet i sikkerhetsbilletter (access tokens). Vi tilbyr to claims: ett for hovedenhet og ett for underenhet, begge inneholder organisasjonsnummer fra enhetsregisteret.

HelseID støtter tre mekanismer for håndtering av organisasjonsnummer og alle tre bør være støttet av fhi.helseid:

  1. Organisasjonsnummer kan være lagret i en klientkonfigurasjon. HelseID vil da inkludere disse i access tokens som vi utsteder, klienten kan ikke påvirke om disse inkluderes, klientautentiseringen fungerer her som autentisering av både klient og virksomhet.
  2. Organisasjonsnummer kan være lagret i en klientkonfigurasjon, men vi har en liste over gyldige underenheter. Dette fungerer som over, men klienten må fortelle HelseID hvilken underenhet den representerer når den ber om en brukerpålogging eller et token. HelseID vil validere at underenheten finnes i listen over gyldige underenheter (hvitelisten) før et access token utstedes.
  3. En liste over gyldige organisasjonsnummer for hovedenheter kan være lagret i klientkonfigurasjonen. Klienten må da fortelle HelseID hvilken hovedenhet og underenhet den representerer når den ber om en brukerpålogging eller et token. HelseID vil validere at hovedenheten er gyldig, men vil stole på informasjon om underenhet uten å validere denne. Listen over gyldige hovedenheter baserer seg på representasjonsforhold for virksomheter som er opprettet i Altinn. Dette mønsteret er tilgjengelig i HelseID sitt testmiljø, men er ikke godkjent for bruk i produksjon ennå.

fhi.helseid bør støtte alle disse mønstrene, både i forbindelse med brukerpålogging og i en maskin-til-maskin kontekst.

Feil i Fhi.HelseId.TestSupport.Nuget.yml

Denne ble feil oppdatert i PR #316. Feilen stopper publiseringen av neste versjon av Fhi.HelseId.

PR #320 oppdaterer Fhi.HelseId.TestSupport til å referere siste publiserte versjon av Fhi.HelseId. Det er for tiden versjon 5.2.0.

Unngå Microsoft's mapping av given_name og family_name for API

Microsoft mapper om følgende claims fra HelseId:

Dette er det tatt høyde for i Web-delen hvor man fjerner denne mappingen:

JwtSecurityTokenHandler.DefaultInboundClaimTypeMap.Clear();

Dette gjøres ikke for API, så man vil ikke få tak i given_name eller family_name fra claims i et access token om dette innholder det. Her må samme fiks gjøres.

Protected paths er ikke beskyttet for brukere med en ikke godkjent HPR-rolle

Når man bruker denne komponenten er ikke protected paths beskyttet fra personer med en ikke godkjent HPR-rolle.
F.eks om en app har satt opp tilgang til kun leger på denne måten:

public class HprApprovals : GodkjenteHprKategoriListe
{
    public HprApprovals()
    {
        Add(Kodekonstanter.OId9060Lege);
    }
}

Om man da logger inn med en bruker som er sykepleier får man fortsatt tilgang beskyttede pather, f.eks index.html.
Alle API-kall vil dog gi 403 Forbidden.

Feilen ser ut til å ligge her:

app.UseProtectPaths(new ProtectPathsOptions(config.UseHprNumber ? Policies.HprNummer : Policies.HidAuthenticated, redirect.Forbidden)

Det blir ikke tatt hensyn til HprKonfigurasjon her.
Dersom UseHpr og UseHprPolicy er true burde policy for protected paths blitt satt til Policies.GodkjentHprKategoriPolicy.

Så lenge UseHprNumber er true brukes Policies.HprNummer uansett for disse pathene.

Transitive referanser gir kræsj på dotnet 8

Får følgende kræsj på grunn av versjonskonflikt mellom transitive referanser. Skjer i prosjekter hvor andre refererte pakker har transitiv referanse til nyere versjon av Microsoft.IdentityModel.Tokens. Ulike versjoner av Microsoft.IdentityModel.Protocols.OpenIdConnect og Microsoft.IdentityModel.Tokens forårsaker kræsjen. Kan løses ved å eksplisitt legge inn referanse til ny versjon av Microsoft.IdentityModel.Protocols.OpenIdConnect, men direkte støtte for dotnet 8 hadde vært å foretrekke.,

Har laget en PR (#316) slik at både dotnet 6 og 8 støttes direkte, men støtte for dotnet 8 påvirker også workflow filene og jeg er usikker på om det er blitt løst riktig.

System.InvalidOperationException: IDX20803: Unable to obtain configuration from: '[PII of type 'System.String' is hidden. For more details, see https://aka.ms/IdentityModel/PII.]'.
 ---> System.TypeLoadException: Could not load type 'Microsoft.IdentityModel.Json.JsonConvert' from assembly 'Microsoft.IdentityModel.Tokens, Version=7.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'.
   at Microsoft.IdentityModel.Protocols.OpenIdConnect.OpenIdConnectConfigurationRetriever.GetAsync(String address, IDocumentRetriever retriever, CancellationToken cancel)
   at System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start[TStateMachine](TStateMachine& stateMachine)
   at Microsoft.IdentityModel.Protocols.OpenIdConnect.OpenIdConnectConfigurationRetriever.GetAsync(String address, IDocumentRetriever retriever, CancellationToken cancel)
   at Microsoft.IdentityModel.Protocols.OpenIdConnect.OpenIdConnectConfigurationRetriever.Microsoft.IdentityModel.Protocols.IConfigurationRetriever<Microsoft.IdentityModel.Protocols.OpenIdConnect.OpenIdConnectConfiguration>.GetConfigurationAsync(String address, IDocumentRetriever retriever, CancellationToken cancel)
   at Microsoft.IdentityModel.Protocols.ConfigurationManager`1.GetConfigurationAsync(CancellationToken cancel)
   --- End of inner exception stack trace ---
   at Microsoft.IdentityModel.Protocols.ConfigurationManager`1.GetConfigurationAsync(CancellationToken cancel)
   at Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerHandler.HandleAuthenticateAsync()


Doble bygg i workflow filer

Workflow filene Fhi.HelseId.CI.yml og Fhi.HelseId.Refit.Nuget.yml fører til at det blir bygget 2 ganger. En gang per framework versjon. Dette skyldes bruk av matrix.

Implementere støtte for ikke-web applikasjoner

fhi.helseid støtter i dag bare tradisjonelle web-applikasjoner og api-er. Mye av programvaren som brukes i norsk helsesektor er desktopprogrammer (windows) og gjerne delt opp i en klient-server arkitektur der vi har en felles backend som kommuniserer med lokalt installerte klienter.

For å støtte dette scenariet må vi gjøre en stor omskriving av komponenten. Det blir sannsynligvis en egen komponent på siden av de andre, men den bør kunne gjenbruke mye fra den eksisterende. Tenker da særlig på konfigurasjon, men tror vi kan gjenbruke mer.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.