Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

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 supportsag på som indeholder metadata som beskriver klienten der skal oprettes eller modificeres (link). Metadata vedhæftes som JSON til sagen. 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 RFC4514 (se https://datatracker.ietf.org/doc/html/rfc2253rfc4514). 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.RFC4514.

Der er lavet en detaljeret beskrivelse af hvordan Subject beskrives i denne encoding her 4. Design og Arkitektur beskrivelse#4.DesignogArkitekturbeskrivelse-FormatafSubjectp%C3%A5mTLSklientcertifikater

(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

redirect_uris 

Skal kun angives for brugerklienter, men ikke for systemklienter.


Et array med en angivelse af hvilke URI’er Authorization Server må redirecte brugerens browser til efter kaldet til Authorization Serverens Authorization Endpoint.

audience

Ønsket audience ("aud" claim) i udstedte token. Tilladte værdier er

  • https://eer.ehmi.dk
  • https://eds.ehmi.dk
  • https://eas.ehmi.dk

ehmi:eer:device_id 

Skal kun angives for systemklienter med EDS scope.

En angivelse af det device_id som stationen er registreret med i EER.

ehmi:org_context 

Skal kun angives for systemklienter med EDS scope.

Et array af JSON objekter bestående af name (organisationsnavn), sor (SOR kode) og gln (lokationsnummer) som stationen sender/modtager meddelelser for.


Eksempel på metadata for oprettelse af en systemklient:

{
"token_endpoint_auth_method": "tls_client_auth",
"grant_types": ["client_credentials"],
"client_name": "Dev - EHMI Systemklient",
"audience": "https://eds.ehmi.dk",
"scope": "EDS system/AuditEvent.crs",
"contacts": [
"døgnsupport@korsbæk.dk",
"+45 1234 5678"
],
"tls_client_auth_subject_dn": "C=DK,2.5.4.97=#0c0e4e5452444b2d3936303234313430,O=Testorganisation nr. 96024140,SERIALNUMBER=UI:DK-O:G:7bd0d84a-c1f3-4650-a351-4235c482ebeb,CN=System 1",
"ehmi:eer:device_id": "c4b8d3ea-b187-426b-be77-bffd9f593d84",
"ehmi:org_context": [
{"name": "Frederiksbjerg Lægehus","sor": "1216891000016007","gln": "5790000135912"},
{"name": "Aarhus Sygehus","sor": "1216891000013002","gln": "5790000530906"}
]
}


Eksempel på metadata for oprettelse af en brugerklient:

{
"token_endpoint_auth_method": "tls_client_auth",
"grant_types": ["authorization_code","refresh_token"],
"client_name": "Dev - EHMI Brugerklient",
"audience": "https://eds.ehmi.dk",
"scope": "EDS user/AuditEvent.rs",
"contacts": [
"døgnsupport@korsbæk.dk",
"+45 1234 5678"
],
"tls_client_auth_subject_dn": "C=DK,2.5.4.97=#0c0e4e5452444b2d3936303234313430,O=Testorganisation nr. 96024140,SERIALNUMBER=UI:DK-O:G:7bd0d84a-c1f3-4650-a351-4235c482ebeb,CN=System 1",
"redirect_uris": ["https://ehmi-client.local:8443/login/oauth2/code/oauth-par"]
} 

Sikkerheds profil

NSP Keycloak følger FAPI 2.0 (se https://openid.net/specs/fapi-security-profile-2_0-final.html) med yderligere indskrænkninger af profilen:

Token profil

NSP Keycloak udsteder tokens jf. “JWT Token Profile for Healthcare (JTP-H)”

Verifikation af tokens

Verifikation af tokens som udstedes af NSP Keycloak skal foretages ved hjælpe af NSP Access Handler (se NSP Access Handler - Leverancebeskrivelse)

Typiske fejl man kan opleve som anvender

Kald til token og PAR endpoint 

Client_id er ukendt

Hvis der angives en ukendt client_id returneres en HTTP fejl 401 med teksten "{"error":"invalid_request","error_description":"Authentication failed."}" 

Ikke tilladte scopes

Hvis der anmodes om scopes som ikke er tilladte returneres en HTTP fejl 400 med teksten "{"error":"invalid_request","error_description":"Invalid scopes: EDS user/AuditEvent.rs"}"

Forkert mTLS certifikat

Hvis der anvendes et forkert mTLS klientcertifikat eller hvis subject i metadata ikke er angivet 100% korrekt returneres en HTTP fejl 401 med teskten "{"error":"invalid_request","error_description":"Authentication failed."}" 

Ikke tilladt redirect_uri

Hvis der angives en redirect_uri som ikke er tilladt returneres en HTTP fejl 400 med tekesten "{"error":"invalid_request","error_description":"Invalid parameter: redirect_uri"}"Hvordan identificerer man som anvender disse fejl