In een Identity Management-oplossing staat de gebruiker centraal. Maar hoe kun je nieuwe gebruikers toewijzen? Er zijn verschillende manieren om dat te doen. Gebruikers kunnen zichzelf aanmelden, maar het kan ook programmatisch met behulp van SCIM.
SCIM (System for Cross Domain Identity Management) is een open standaard voor gebruikerstoewijzing. Sinds de eerste release van SCIM zijn er een aantal herzieningen geweest en de huidige versie is SCIM 2.0. Kort gezegd maakt SCIM gebruikersgegevens veiliger en vereenvoudigt het de gebruikerservaring door het automatiseren van het beheer van de levenscyclus van gebruikersidentiteiten.
Het gebruiksscenario voor SCIM (inbound provisioning) omvat het automatiseren van de creatie, bijwerking en deactivering van gebruikersaccounts in doelsystemen op basis van de informatie verstrekt door een identiteitsprovider. SCIM biedt een gestandaardiseerde manier voor identiteitsproviders om te communiceren met doelsystemen en deze toewijzingsbewerkingen uit te voeren. Het maakt naadloze integratie en synchronisatie van gebruikersidentiteiten over verschillende systemen mogelijk, waardoor handmatig gebruikersbeheer overbodig wordt. Het zorgt voor consistentie, nauwkeurigheid en beveiliging bij het beheer van gebruikersidentiteiten.
Hoewel SCIM zich voornamelijk richt op inkomende provisioning, kan het ook worden gebruikt voor uitgaande provisioning, waarbij het betrokken is bij de synchronisatie van gebruikersaccount informatie van de Identity Server naar een doelsysteem van een derde partij. Dit stelt de identity provider in staat om gegevens te synchroniseren over meerdere systemen.
Bulkimport is een functie die vaak geassocieerd wordt met SCIM en toewijzingssystemen. Het maakt de efficiënte creatie of bijwerking van meerdere gebruikersaccounts in bulk mogelijk, meestal via een gestructureerd gegevensbestand. Met bulkimport kunnen organisaties de initiële populatie van gebruikersgegevens stroomlijnen of grootschalige updates uitvoeren in doelsystemen, waardoor tijd en moeite worden bespaard.
WSO2 Identity Server ondersteunt standaard SCIM 2.0 vanaf WSO2 IS 5.4 en hoger. WSO2 IS heeft een set REST API’s geleverd die de SCIM 2.0-protocollen implementeren volgens de SCIM 2.0-specificatie. We zullen de volgende SCIM 2.0 API’s gebruiken voor een Basic User Provisioning scenario, met het volgende:
- Alle gebruikers ophalen
- Een gebruiker maken
- De aangemaakte gebruiker ophalen
- Het gebruikersprofiel bijwerken
- Rollen van een gebruiker bijwerken
- De gebruiker verwijderen
Voordat we beginnen, moeten we de WSO2 IS-server starten. Voor dit doel zal ik de nieuwste WSO2 IS 6.1 gebruiken die op mijn lokale machine draait. Als je niet weet hoe dat moet, kun je een van onze blogs lezen, bijvoorbeeld over het installeren van WSO2 Identity Server. Hoewel dit een oudere versie is, blijft het principe hetzelfde. Vanwege de afschrijving van analytics kun je echter het gedeelte over de Analytics-server en de vertrouwensrelatie overslaan.
Zodra de WSO2-server actief is, kunnen de SCIM-eindpunten als volgt worden benaderd:
- Super tenant: https://<domain>:<port>/scim2
- Andere tenants: https://<domain>:<port>/t/<tenant-domain>/scim2
Ik heb WSO2 IS 6.1 gestart en het SCIM-eindpunt kan worden benaderd met de volgende URL:
Standaard is dit eindpunt beveiligd met basisverificatie, dus zorg ervoor dat je de basistoegangsverificatieheader instelt bij het gebruik van deze API’s. Dit kan worden ingesteld in Postman met behulp van het type Basisverificatie in het tabblad Autorisatie.
Postman
Postman maakt het testen van de SCIM API’s eenvoudig. Om de API’s uit te proberen, kun je de Postman-collectie downloaden en importeren vanuit deze link: https://bitbucket.org/yenlo/yenlo_scim-blog/src/master/scim_apis_postman_collection.json. Zodra geïmporteerd, zijn alle vereiste API’s gekoppeld aan de lokale identiteitsserver om de basisgebruikerstoewijzing uit te proberen.
Ik ga ervan uit dat je Postman al lokaal hebt geïnstalleerd of via de browser hebt geïmporteerd. Start Postman op je besturingssysteem. Wanneer Postman is gestart, kun je het gedownloade bestand importeren. Zoek de importknop en klik erop.
Selecteer het gedownloade bestand.
Nu zijn we klaar om informatie over gebruikers op te halen. Uit de API-documentatie weten we dat we een GET kunnen uitvoeren en welke parameters er zijn.
Alle gebruikers ophalen
Selecteer het verzoek “Alle gebruikers ophalen” in de Postman-collectie. Het eindpunt is: GET: https://localhost:9443/scim2/Users
Dit geeft alle gebruikers in IS terug, zoals hieronder getoond:
Deze reactie bevat alle benodigde gebruikersgegevens, zoals de ID, gebruikersnaam, metagegevens en de rollen (groepen) van de gebruiker. De reactie bevat ook de vereiste informatie om paginering te ondersteunen.
Een gebruiker maken
Selecteer het verzoek “Een gebruiker maken” in de Postman-collectie. Het eindpunt is: POST: https://localhost:9443/scim2/Users
Dit zal een gebruiker maken en de gegevens van de aangemaakte gebruiker retourneren, zoals hieronder weergegeven:
De aangemaakte gebruiker wordt opgeslagen als variabele, die zal worden gebruikt bij het ophalen, bijwerken en verwijderen van de gebruiker.
De aangemaakte gebruiker zal zich bevinden in de primaire gebruikersopslag. Als de gebruiker in een andere gebruikersopslag moet worden gemaakt, moet bij het maken van de gebruiker de gebruikersnaam worden voorafgegaan door het voorvoegsel {domeinnaam}/.
Bijvoorbeeld, als de gebruikersnaam ‘saad’ is en de domeinnaam van de secundaire gebruikersopslag ‘blog’ is, moet de gebruikersnaam ‘blog/saad’ zijn. Op deze manier wordt de gebruiker toegevoegd aan de opgegeven gebruikersopslag.
Het ID van de aangemaakte gebruiker wordt opgeslagen als variabele en zal worden gebruikt bij het ophalen, bijwerken en verwijderen van de gebruiker.
De aangemaakte gebruiker ophalen
Selecteer het verzoek “De aangemaakte gebruiker ophalen” in de Postman-collectie. De gebruiker kan worden opgehaald aan de hand van het gebruikers-ID. Het eindpunt is: GET: https://localhost:9443/scim2/Users/<gebruikers-ID>
Dit geeft alleen de specifieke gebruiker terug die overeenkomt met het opgegeven gebruikers-ID, zoals hieronder weergegeven:
Dit retourneert de gegevens die specifiek zijn voor de gevraagde gebruiker.
Het gebruikersprofiel bijwerken
Selecteer het verzoek “Gebruikersprofiel bijwerken” in de Postman-collectie. Het gebruikersprofiel kan worden bijgewerkt aan de hand van het gebruikers-ID. Het eindpunt is: PUT: https://localhost:9443/scim2/Users/<gebruikers-ID>
Hiermee wordt het gebruikersprofiel bijgewerkt om bijvoorbeeld het mobiele nummer toe te voegen:
De reactie bevat de bijgewerkte gebruikersprofielgegevens, waaronder het bijgewerkte mobiele nummer van de gebruiker. Met behulp van deze API kunnen ook andere gebruikersinformatie dienovereenkomstig worden bijgewerkt.
Rollen van een gebruiker bijwerken
Selecteer het verzoek “Alle rollen ophalen” in de Postman-collectie en voer het verzoek uit om de rol-ID’s als variabelen op te slaan die worden gebruikt bij de update. Selecteer vervolgens het verzoek “Gebruikersrollen bijwerken” in de Postman-collectie.
Voor het bijwerken van de rollen van een gebruiker kan de Bulk API worden gebruikt. Er zijn API’s beschikbaar via de Group API waarmee alleen een specifieke rol kan worden bijgewerkt om gebruikers aan de rol toe te voegen of ervan te verwijderen. Maar met de Bulk API kunnen SCIM-bronnen in bulk worden gemaakt/bijgewerkt/verwijderd/vervangen. Afhankelijk van de bewerking die wordt opgegeven in het verzoekspayload, wordt de relevante SCIM-bron dienovereenkomstig beïnvloed.
Het eindpunt is: POST: https://localhost:9443/scim2/Bulk
Hiermee worden twee rollen aan de gebruiker toegevoegd:
In deze API worden meerdere bewerkingen opgegeven om de gebruiker aan meerdere rollen toe te voegen, en de reactie bevat een statuscode voor elke bewerking.
De gebruiker verwijderen: Selecteer het verzoek “Een gebruiker verwijderen” in de Postman-collectie. De gebruiker kan worden verwijderd aan de hand van het gebruikers-ID. Het eindpunt is: DELETE: https://localhost:9443/scim2/Users/<gebruikers-ID>
Een specifieke gebruiker kan als volgt worden verwijderd door het gebruikers-ID op te geven:
Deze API reageert met een HTTP-statuscode 204 om aan te geven dat het verzoek succesvol is. Daarom is de gebruiker succesvol verwijderd.
Bovenstaande API’s kunnen worden gebruikt voor basisgebruikerstoewijzing met behulp van SCIM API’s. Er zijn nog veel meer SCIM API’s die kunnen worden gebruikt, afhankelijk van het gebruiksscenario. Alle andere SCIM API’s kunnen worden geraadpleegd via de WSO2-documentatie.
Conclusie
Door de bovenstaande stappen te volgen, kan gebruikerstoewijzing worden bereikt met WSO2 Identity Server met behulp van het SCIM-protocol.
SCIM kan worden gebruikt in combinatie met LDAP (Lightweight Directory Access Protocol) of AD (Active Directory) voor het faciliteren van gebruikerstoewijzing en identiteitsbeheer. LDAP wordt vaak gebruikt voor het opslaan en ophalen van gebruikersidentiteiten, attributen en organisatiegegevens. SCIM kan integreren met LDAP om de toewijzing van gebruikersaccounts en de synchronisatie van gebruikersattributen tussen de identiteitsprovider en LDAP-directory te automatiseren.
Op dezelfde manier kan SCIM ook integreren met AD, dat een directoryservice is die door Microsoft wordt geleverd voor Windows-gebaseerde omgevingen. AD wordt veel gebruikt in organisaties voor gebruikersauthenticatie, autorisatie en identiteitsbeheer. SCIM kan gebruikmaken van de mogelijkheden van AD voor gebruikerstoewijzing en synchronisatie tussen de identiteitsprovider en AD.
Hoewel SCIM vaak wordt geassocieerd met directoryservices zoals LDAP en AD, is het flexibel genoeg om te werken met RDBMS (Relation Database Management System) voor het efficiënt beheren van een grote gebruikersopslag. Door gebruik te maken van SCIM met RDBMS voor een grote gebruikersopslag kan een organisatie profiteren van gestroomlijnd gebruikersbeheer en efficiënte toewijzing. Het biedt een schaalbare en aanpasbare oplossing voor het beheren van gebruikersidentiteiten en -attributen in een relationele database.
De integratie van SCIM met LDAP, AD of RDBMS biedt een gestandaardiseerde en geautomatiseerde aanpak voor gebruikersbeheer, waardoor handmatige inspanningen worden verminderd, consistentie wordt gewaarborgd en de gegevensnauwkeurigheid over systemen wordt verbeterd.
Door gebruik te maken van het SCIM-protocol kunnen voordelen zoals centralisatie van identiteit en standaardisatie van toewijzingsidentiteit worden verkregen. Het is dus zeker voordelig voor een organisatie om het SCIM-protocol te gebruiken voor identiteitstoewijzing.