Klienter

NSP Keycloak understøtter 2 forskellige typer klienter

Begge klienttyper er confidential clients i OAuth forstand

Systemklienter

En systemklient er en klient som via system-til-system-integration tilgår en EHMI service. Selvom klienten måtte foretage opslag på baggrund af en brugerhandling, er systemklienten defineret ved at brugerens identitet ikke er relevant i den givne kontekst og ikke kommunikeres til EHMI servicen. Eksempler på systemklienter er sundhedsadresseringsservicen som tilgår postkasseregisteret eller et fagsystem som tilgår forsendelsesstatusservicen

Brugerklienter

En fuld klient med brugerdelegering (eller bare brugerklient i det følgende) er en klient som foretager kald for en autentificeret bruger, hvis identitet kommunikeres til EHMI servicen som en del af tokenet, der indgår i kaldet. Klienten er defineret som ’fuld’ i OAuth forstand, idet den både kan autentificere sig selv og brugeren (via et webbrowser-baseret flow). Et eksempel på en fuld klient med brugerdelegering i en EHMI kontekst er backenden til en webapplikation som tilbyder søgninger i forsendelsesstatusservicen.

Oprettelse af klienter

Alle klienter oprettes og vedligeholdes ved hjælp af OAuth 2.0 Dynamic Client Registration Protocol (se https://datatracker.ietf.org/doc/html/rfc7591), Adgangen til at kalde client registration endpoint er begrænset til NSP administrationen. Dette betyder at anvendere af NSP Keycloak som ønsker en klient oprettet eller modificeret skal oprette en Jira sag som indeholder metadata som beskriver klienten der skal oprettes eller modificeres. Generelt er strukturen og tilladte felter beskrevet i RFC7591. NSP Keycloak understøtter (og kræver) dog nogle custom felter. Nedenfor er alle relevante felter for klient metadata til NSP Keycloak beskrevet.


Metadata elementBeskrivelse

token_endpoint_auth_method

Hvordan klienten autentificerer sig ved Authorization
Serverens Token Endpoint. Sættes til den faste værdi
tls_client_auth dvs. autentifikation på transportlaget
via et (OCES) TLS-klientcertifikat.

grant_types 

Et array med en angivelse af hvilke OAuth flows klienten
anvender.


Sættes henholdsvis til den faste værdi [”client_credentials”] for systemklienter og til [”authorization_code”, ”refresh_token”] for brugerklienter.

client_name 

Et sigende navn for klienten, som letter administrations-
opgaven i Authorization Server.
Fx "EHMI Access Point for Region Midtjylland"

scope

En liste af OAuth scope værdier (adskilt med blank space)
som klienten ønsker at kunne lade indgå i access tokens.
Fx "EDS system/AuditEvent.crs"

contacts

Et array med kontaktoplysninger (typisk e-mailadresser
eller telefonnumre) til organisationen, som er ansvarlig for
driften af klienten.

F.eks. "["support@firma.dk", "+45 1234 5678"]"

tls_client_auth_subject_dn

Subject Distinguished Name fra OCES systemcertifikatet som anvendes som TLS-klientcertifikat.

F.eks.

"C=DK,2.5.4.97=#0c0e4e5452444b2d3936303234313430,O=Testorganisation nr. 96024140,SERIALNUMBER=UI:DK-O:G:7bd0d84a-c1f3-4650-a351-4235c482ebeb,CN=System 1"

Bemærk, at formatet på Subject skal følge RFC2253 (se https://datatracker.ietf.org/doc/html/rfc2253). Der kan med fordel tages udgangspunkt i ovenstående eksempel. Bemærk specielt at organizationIdentifier skal angives som OID 2.5.4.97 og værdien skal encodes som beskrevet i afsnit 2.4 i RFC2253.

(Der anbefales at OCES systemcertifikater ikke udstedes med et certifikatspecifikt UUID3, idet Subject Distinguished Name derved videreføres i uforandret form ved certifikatfornyelse og klientens registrering i Authorization Server således ikke skal ajourføres i forbindelse med certifikatfornyelse).



 

Client oprettelse:

Beskrivelse af metadata og proces for at bestille klient (supportsag på NSPOP)

Kopier beskrivelse af certifikat subject

Kopier fra CG arkitektur til confluence

 

PAR og mTLS

 

Verifikation af tokens : Link til Access Handler og JTP-H

 

Top 3 fejl : mTLS fejl, illegal redirect, manglende scope

Hvordan identificerer man som anvender disse fejl