SCIM doelsysteem documentatie
Algemeen
System for Cross-domain Identity Management (SCIM) is een open standaard voor het uitwisselen van identiteitsgegevens tussen IT-systemen via RESTful webservices.
WebIDM implementeert
Dit document dient enkel ter verduidelijking van de SCIM implementatie door WebIDM. Het gedrag van de web service wordt uitgebreid beschreven in RFC 7644.
Aandachtspunten bij de SCIM implementatie van WebIDM:
Er wordt geen gebruik gemaakt van het PATCH verb om resources te wijzigen, enkel PUT wordt gebruikt waarmee de resource volledig wordt vervangen door de nieuwe waarde.
Enkel het User schema werd geïmplementeerd. Er wordt geen gebruik gemaakt van het Group schema. Meer informatie: RFC 7642.
WebIDM is in de context van bovenstaande RFC de Enterprise Cloud Subscriber (ECS).
De applicatie die informatie ontvangt van WebIDM neemt hier de rol van Cloud Service Provider (CSP) op, verder Service Provider genoemd.
Business proces
Aanmaak van een gebruiker
Een gebruiker wordt aangemaakt wanneer deze minstens één werkrelatie heeft met een toegekend recht in WEBIDM.
Volgende informatie wordt minstens doorgegeven:
Categorie | WebIDM attribuut | Beschrijving | Verplicht | SCIM property |
Medewerker info
| VO-id/ VirtualIdentity UUID | Unieke id binnen een doelgroep (GID, Economische actoren, Lokale Besturen, Onderwijs) | externalId | |
Voornaam |
| name.givenName | ||
Achternaam |
| name.familyName | ||
Status |
| active | ||
Link medewerker – organisatie info (werkrelatie)
| Organisatiecode | Unieke sleutel van de organisatie (zoals OVO, KBO nummer,…). Wordt toegevoegd aan e-mailadressen, rechten of contexten. *Verplicht wanneer e-mailadres, recht of context geprovisioneerd wordt. | * | |
Gebruikersrechten | Het recht voor een bepaalde organisatie (werkrelatie). Formaat: Fully Qualified of Simple Fully Qualified: [Organisatiecode]-[Categorie key]:[Categorie waarde],[Account type key:Account type waarde,…]-[Recht]
Simple: [Recht] Opgelet: dit formaat is onnauwkeurig en verliest cruciale informatie. Dit formaat kan enkel gebruikt worden indien de werkrelatie-informatie niet relevant is. AgO_VlimpersLeren_GID_CompEnt_Gebruiker | entitlements (lijst) |
Volgende informatie kan optioneel worden doorgegeven:
Categorie | WebIMD attribuut | Beschrijving | Verplicht | SCIM property |
Medewerker info | Login | Unieke gegenereerde gebruikersnaam Heeft geen vast formaat lastnafi (met als formaat 6 letters lastname + 2 letters firstname) | userName | |
INSZ-nummer | Rijksregister- of BISnummer | urn:ietf:params:scim:schemas:extension:idm:2.0:User.socialSecurityNumber | ||
Doelgroepcode | De code van de doelgroep waar de gebruiker en zijn werkrelatie onder zijn aangemaakt. | urn:ietf:params:scim:schemas:extension:idm:2.0:User.closedUserGroupCode en/of urn:ietf:params:scim:schemas:extension:idm:2.0:Cug.code | ||
Doelgroepnaam | De naam van de doelgroep waar de gebruiker en zijn werkrelatie onder zijn aangemaakt. | urn:ietf:params:scim:schemas:extension:idm:2.0:Cug.name | ||
Link medewerker – organisatie info (werkrelatie) | E-mailadressen | Het e-mailadres wordt opgeslagen op niveau van de werkrelatie, maar is niet noodzakelijk verschillend per werkrelatie.
{
"value": "webidm@vlaanderen.be",
"type": "OVO000089"
} | emails (lijst) | |
Telefoonnummers | Is niet noodzakelijk verschillend per werkrelatie. Wordt samen met organisatiecode opgeslagen waardoor de link werkrelatie-telefoonnummer gemaakt wordt. {
"value": "+32000000",
"type": "OVO000089"
} | phoneNumbers (lijst) | ||
Contexten | De context (zoals Rol, Maatregel, Domein,..) binnen een bepaald recht. Formaat: Fully Qualified Fully Qualified: [Organisatiecode]-[Categorie key]:[Categorie waarde],[Account type key:Account type waarde,…]-[Recht]:[Contextwaarde]
| roles (lijst) | ||
Contexten | De context (zoals Rol, Maatregel, Domein,...) binnen een bepaald recht. Formaat: Fully Qualified of Simple Fully Qualified: [Organisatiecode]-[Categorie key]:[Categorie waarde],[Account type key:Account type waarde,…]-[Recht]:[Contextwaarde]
Simple: [Contextwaarde] Opgelet: dit formaat is onnauwkeurig en verliest cruciale informatie. Dit formaat kan enkel gebruikt worden indien de werkrelatie - of recht informatie niet belangrijk is. | groups (lijst) |
Wijzigen van een gebruiker
Een update actie wordt uitgevoerd:
Als de gebruiker een nieuwe actieve toekenning van het recht krijgt onder een werkrelatie.
Actief wilt hier zeggen:
De start tijd van de werkrelatie is kleiner dan of gelijk aan vandaag.
De eind tijd van de werkrelatie is groter dan of gelijk aan vandaag.
De start tijd van de toekenning van het recht is kleiner dan of gelijk aan vandaag.
De eind tijd van de toekenning van het recht is groter dan of gelijk aan vandaag.
De werkrelatie is actief, niet gepauzeerd.
De toekenning van het recht is actief, niet gepauzeerd.Als de gegevens van een actieve toekenning van het recht wijzigt.
Vb: Context (rol) wordt toegevoegd, verwijderd of aangepastAls een actieve toekenning van het recht verwijderd wordt.
Als de eind tijd van de toekenning van het recht kleiner is dan vandaag. Ofwel: de actieve toekenning van het recht verloopt.
Als de informatie van de gebruiker of van een bestaande werkrelatie (met actieve toekenning van het recht) wijzigt.
Vb: nieuw emailadres, nieuwe login, naamswijziging,…Als de toekenning van het recht gepauzeerd wordt.
Als de werkrelatie met actieve toekenning van het recht gepauzeerd wordt.
Verwijderen van een gebruiker
Een delete actie wordt uitgevoerd:
Als de gebruiker zijn laatste actieve toekenning van het recht verliest.
De Service Provider moet gebruikers op zijn minst inactief maken bij een delete en alle gekende rechten verwijderen.
Pauzeren
WebIDM heeft een pauzeer-knop op niveau van de werkrelatie en recht. Dit laat de lokale beheerder toe om delen van een gebruiker tijdelijk te inactiveren, bv bij langdurige ziekte.
Pauzeren zal lijken op toekenningen die verdwijnen in WebIDM:
Updates met daarin minder werkrelaties of rechten dan de Service Provider op dat moment kent.
Actief/niet-actief vlag
Op niveau van een gebruiker bestaat een vlag die enkel systeembeheerders kunnen aan- of uitzetten om gebruikers in uitzonderlijke gevallen dringend te deactiveren zonder deze helemaal te moeten verwijderen.
Het pauzeren van een volledige gebruiker zal een update uitvoeren met de SCIM active property op false.
Ook bij de Service Provider moeten a.d.h.v. deze vlag gebruikers ge-activeerd of gedeactiveerd worden.
Dit zijn update acties, geen delete acties.
Technisch implementatie
SCIM Endpoint
De targetapplicatie waar WebIDM naar provisioneert, moet minstens volgende functionaliteit in zijn SCIM endpoints implementeren:
Find User
Create User
Update User
Delete User
OpenAPI specificatie
Deze kan bekeken worden op https://editor.swagger.io/
Find User
GET v2/Users?filter=externalId Eq "{externalId}" | ||
---|---|---|
externalId | 4ad4896c-2f09-4906-ba25-32d5543bd71b | |
Responses | ||
Code | Description | Example |
200 | OK | |
200 | OK |
Create User
Het aanmaken van de User gebeurt d.m.v. een POST request om de User aan te maken. Deze POST bevat naast persoonsgegevens ook de rechten en indien geconfigureerd optionele attributen als e-mailadressen of rollen.
POST v2/Users | ||
---|---|---|
Body | ||
Responses | ||
Code | Description | Example |
201 | Created | De body bevat een volledige weergave van de aangemaakte resource. |
409 | Conflict | Als de service provider vaststelt dat de creatie van de User conflicteert met een bestaande User moet er een status 409 teruggegeven worden met een "scimType" error code van "uniqueness", as per Section 3.12. |
Update User
PUT v2/Users/{id} | ||
---|---|---|
id | e65adc36-cb15-4b4d-b8df-cb6cba347f8c | |
Body | ||
Responses | ||
Code | Description | Example |
200 | OK | De body bevat een volledige weergave van de resource. |
Delete User
DELETE v2/Users/{id} | ||
---|---|---|
id | e65adc36-cb15-4b4d-b8df-cb6cba347f8c | |
Responses | ||
Code | Description | Example |
204 | No content | De Service Provider zet de User minstens op inactief als er voor gekozen wordt om de resource niet definitief te verwijderen. |
404 | Not found | User was voorheen deleted/op inactief gezet. |
Health check
Een health check service moet geïmplementeerd worden door de Service Provider. WebIDM beslist aan de hand van de respons of er een provisionering kan gestart worden.
GET https://[yourScimEndpoint]/statuscheck | ||
---|---|---|
Responses | ||
Code | Description | Result |
200 | OK | provisionering kan starten |
4xx | provisionering on hold, er worden door WebIDM geen gegevens uitgeleverd aan de Service Provider |
Beveiliging
Voor het beveiligen van de communicatie tussen WebIDM en de SCIM Service Provider ondersteunen we MutualTLS (mTLS)-authenticatie of OAuth2.0.
Naast deze beveiligingsmaatregelen, moeten mogelijks ook de nodige datastromen voorzien worden tussen WebIDM en de Service Provider.
MutualTLS
Voor een veilige verbinding, zowel over het lokaal netwerk binnen VO als over het internet, kunnen WebIDM (via Datapower) en de SCIM Service Provider MutualTLS authenticatie implementeren, waarbij beide partijen zich authenticeren tegenover elkaar d.m.v. X509 certificaten.
De SCIM Service Provider moet het client certificaat van WebIDM (Datapower) vertrouwen. Daarnaast moet de SCIM Service Provider een GlobalSign of VO PKI SSL server certificaat voorzien dat WebIDM (Datapower) kan vertrouwen.
OAuth2.0
In plaats van authenticatie d.m.v. certificaten via MutualTLS, is het ook mogelijk om de authenticatie d.m.v. OAuth-tokens in te regelen. WebIDM zal thans de OAuth Client Credentials Grant volgen (info): WebIDM vraagt een access token aan bij de identity provider (i.e. ACM), en zal dat access token gebruiken om het extern doelsysteem te bevragen. Het extern doelsysteem functioneert in deze context dus als resource server (API). De registratie van het doelsysteem als een met ACM geïntegreerde resource server maakt deel uit van het integratietraject: het doelsysteem zal geregistreerd worden in het Beheerportaal (info). In het Beheerportaal kan u dan, als u in IDM over het recht “API-beheerder en Client-beheerder” beschikt, uw resource server beheren – u kan de authenticatiemethode instellen, u kan de koppeling van uw doelsysteem met IDM goedkeuren, enz. Let wel; het verkeer tussen WebIDM en het doelsysteem zal ook in deze opzet nog steeds via DataPower verlopen; DataPower zal namelijk nog steeds de geldigheid en revocatie-status van de certificaten controleren.
Verschillen tegenover vorige versie
WebIDM ondersteunt nu ook authenticatie a.d.h.v. OAuth-tokens.
Op deze pagina:
- 1 Algemeen
- 2 Business proces
- 3 Technisch implementatie
- 3.1 SCIM Endpoint
- 3.2 OpenAPI specificatie
- 3.3 Find User
- 4 Create User
- 4.1 Update User
- 4.2 Delete User
- 4.3 Health check
- 5 Beveiliging
- 6 Verschillen tegenover vorige versie
Vragen of suggesties, contacteer ons via: integraties@vlaanderen.be
Heb je nood aan ondersteuning bij het gebruik van de toepassing, contacteer de 1700.