Authorization Flow
When a client starts an OIDC Authorization Code Flow for a municipal user, it goes through the following federation process.
The sequence diagram for clinicians' logins, explained in https://ehealth-dk.atlassian.net/wiki/spaces/EDTW/pages/101122074/Login#Clinical-logins, shows how the OIDC Authorization Code Flow is redirected through a series of steps involving OIOSAML-based AuthNRequest and AuthNResponse.
Here's a summary of the responsibilities of the services involved:
The KOMBIT Context Handler created a SAML AuthnResponse based on registrations stored in the KOMBIT user administration system KOMBIT STS Administration (STS Admin or DK Admin for short).
The eHealth Infrastructure-hosted SAML Proxy - This service does tasks like substituting and translating KOMBIT-flavor SAML Attributes to ensure uniform OIOSAML OIO-BPP Attributes are provided to SEB. It also enhances OIOSAML Attributes by adding the employee's CPR number, obtained from the KOMBIT FK Organisation system.
Sundhedsvæsenets Elektroniske Brugerstyring (SEB) - This is the shared user administration platform for the Danish healthcare sector.
The eHealth Authorization Service (KeyCloak) - When the KOMBIT NSIS Context Handler can connect directly with SEB and the SAML-proxy is removed from the flow. The KeyCloak service shall then modify and adapt KOMBIT-style SAML Attributes to ensure they match the uniform OIOSAML OIO-BPP Attributes used.
Registrations Required in Municipal KOMBIT Systems
KOMBIT Terms and Concepts
The English terms used in the following do not constitute official, KOMBIT translations of the Danish terms used throughout KOMBIT documentation and systems. The Danish terms stem from section 3 in Brugervejledning til Administrationsmodulerne for leverandører.
The following terms are used in registrations in “Fælleskommunalt Administrationsmodul” (KOMBIT STS Admin):
Term | Description |
---|---|
User-facing system (Danish: Brugervendt system) | An IT system that provides an access-controlled user interface, A user-facing system registered in the KOMBIT STS admin enables it to use KOMBIT systems for access control of end-users. For the KOMBIT external test environment the following eHealth environments are registered as user-facing systems, and thereby use KOMBIT systems for access control:
Similar registrations are made in the KOMBIT STS Admin in the KOMBIT production environment, only here the sole SAML Proxy is in eHealth Infrastructure production environment (PROD). |
User system role (Danish: Brugersystemrolle) | Grouping of rights or permissions that define access and access restrictions to a specific user-facing system
|
Data constraint (Danish: Dataafgrænsning) | Restriction of a “user system role”, which narrows the system role's field of action Concerning eHealth Infrastructure, these are: System-specific data constraint
Cross-cutting (data constraint
|
Job function role (Danish: Jobfunktionsrolle) | Grouping of user system roles for an authority (e.g. municipality) used by the authority to assign access to the user. Each municipality shall maintain a set in KOMBIT STS Admin. Concerning eHealth Infrastructure, these comprise:
|
Data constraints (Danish: “data afgrænsninger”)
The data constraints are which narrow the user system role. In eHealth Infrastructure, there are two data constraints in use:
CareTeam - a system-specific data constraint identifying a CareTeam. The optional for some user system roles, required for others (see below)
Organisation - Cross-cutting (data constraint) identifying Organisation from KOMBIT FK Organisation.
Usersystem | Name | EntityId | Syntax validation | |
---|---|---|---|---|
1 | DEVTEST | Careteam | ([0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[0-9a-f]{4}-[0-9a-f]{12})+(,\s*[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[0-9a-f]{4}-[0-9a-f]{12})* | |
2 | INTTEST | Careteam | http://saml-proxy.inttest.ehealth.sundhed.dk/constraints/careteam/1 | ([0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[0-9a-f]{4}-[0-9a-f]{12})+(,\s*[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[0-9a-f]{4}-[0-9a-f]{12})* |
3 | EXTTEST, DEVENVCGI | Careteam | http://saml-proxy.exttest.ehealth.sundhed.dk/constraints/careteam/1 | ([0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[0-9a-f]{4}-[0-9a-f]{12})+(,\s*[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[0-9a-f]{4}-[0-9a-f]{12})* |
4 | TEST002 | Careteam | http://saml-proxy.test002.ehealth.sundhed.dk/constraints/careteam/1 | ([0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[0-9a-f]{4}-[0-9a-f]{12})+(,\s*[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[0-9a-f]{4}-[0-9a-f]{12})* |
5 | PREPROD | Careteam | http://saml-proxy.preprod.ehealth.sundhed.dk/constraints/careteam/1 | ([0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[0-9a-f]{4}-[0-9a-f]{12})+(,\s*[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[0-9a-f]{4}-[0-9a-f]{12})* |
STS Admin User system roles for the eHealth Infrastructure
User system roles for the eHealth Infrastructure registered in KOMBIT STS Admin:
shall have an EntityId on the form:
<namespace>
appended with<KOMBIT user system role for the eHealth Infrastructure>
(see below).can have (and should have) a name in Danish which is the Danish designation https://docs.ehealth.sundhed.dk/latest-released/ig/CodeSystem-ehealth-oio-bpp-roles.html for the corresponding eHealth Infrastructure OIO BPP system role.
The <namespace>
shall reflect the eHealth Infrastructure environment for registration in the KOMBIT STS Admin. The <namespace>
shall be one of the following:
eHealth Infrastructure Environment | <namespace> | |
---|---|---|
1 | INTTEST |
|
2 | EXTTEST, DEVENVCGI |
|
3 | TEST002 |
|
4 | PREPROD |
|
5 | PROD |
|
In case of change in what eHealth Infrastructure environments shall support municipal federation of authentication and authorization, the above list needs to be updated. In addition, such a change needs to be implemented in the mapping performed by the SAML Proxy.
<KOMBIT user system role for the eHealth Infrastructure
> shall be one from the list below:
The table shows the KOMBIT user system role, the corresponding OIO BPP roles, and what data constraints are possible and which are mandatory.
KOMBIT user system roles for the eHealth Infrastructure | Data constraints (EXTTEST) |
| Data constraints (Prod) |
|
|
| |
---|---|---|---|---|---|---|---|
|
| Mandatory | Mandatory | X | |||
|
| Mandatory | Mandatory | Mandatory | x | x | |
|
| Mandatory | Mandatory | x | |||
|
| Mandatory | Mandatory | Mandatory | x | x | |
|
| Mandatory | Mandatory | Mandatory | x | ||
|
| Mandatory | Mandatory | Mandatory | x | ||
|
| Mandatory | Mandatory | Mandatory | x | x | |
|
| Mandatory | Mandatory | Mandatory | x | X | |
|
| Mandatory | Mandatory | x | x | ||
|
| Mandatory | Mandatory | x | |||
|
| Mandatory | Mandatory | x | x | ||
|
| Mandatory | Mandatory | x | |||
|
| Mandatory | Mandatory | x | x | ||
|
| Mandatory | |||||
|
| Mandatory | x | x | |||
|
| Mandatory | x | x | |||
|
| Mandatory | x | x |
If the OIO BPP system roles system listed above deviate from the list in eHealth Infrastructure OIO BPP system roles, the above list needs to be updated. In addition, such a change needs to be implemented in the mapping performed by the SAML Proxy.