In einer Identity-Management-Lösung steht der Benutzer im Mittelpunkt. Aber wie können neue Benutzer bereitgestellt werden? Es gibt verschiedene Möglichkeiten, das zu tun. Benutzer können sich selbst registrieren, aber es ist auch programmgesteuert über SCIM möglich.
SCIM (System for Cross Domain Identity Management) ist ein offener Standard für die Benutzerbereitstellung. Seit der ersten Veröffentlichung von SCIM gab es einige Überarbeitungen, und die aktuelle Version ist SCIM 2.0. Kurz gesagt macht SCIM Benutzerdaten sicherer und vereinfacht die Benutzererfahrung, indem der Lebenszyklus der Benutzeridentität automatisiert wird.
Das Anwendungsszenario für SCIM (eingehende Bereitstellung) umfasst die Automatisierung der Erstellung, Aktualisierung und Deaktivierung von Benutzerkonten in Zielsystemen basierend auf den Informationen, die von einem Identitätsanbieter bereitgestellt werden. SCIM bietet eine standardisierte Möglichkeit für Identitätsanbieter, mit Zielsystemen zu kommunizieren und diese Bereitstellungsvorgänge durchzuführen. Es ermöglicht eine nahtlose Integration und Synchronisierung von Benutzeridentitäten über verschiedene Systeme hinweg und beseitigt die Notwendigkeit einer manuellen Benutzerverwaltung. Es stellt Konsistenz, Genauigkeit und Sicherheit bei der Verwaltung von Benutzeridentitäten sicher.
Während sich SCIM hauptsächlich auf die eingehende Bereitstellung konzentriert, kann es auch für die ausgehende Bereitstellung verwendet werden, bei der die Synchronisierung von Benutzerkontoinformationen vom Identitätsserver zu einem Ziel-Drittsystem erfolgt. Dadurch kann der Identitätsanbieter Daten über mehrere Systeme hinweg synchronisieren.
Die Massenimportierung ist eine Funktion, die häufig mit SCIM und Bereitstellungssystemen in Verbindung gebracht wird. Sie ermöglicht die effiziente Erstellung oder Aktualisierung mehrerer Benutzerkonten in Massen, normalerweise über eine strukturierte Datendatei. Mit der Massenimportierung können Organisationen die anfängliche Bevölkerung von Benutzerdaten optimieren oder groß angelegte Aktualisierungen in Zielsystemen durchführen und dabei Zeit und Aufwand sparen.
WSO2 Identity Server unterstützt standardmäßig SCIM 2.0 ab WSO2 IS 5.4. WSO2 IS stellt eine Reihe von REST-APIs bereit, die die SCIM 2.0-Protokolle gemäß der SCIM 2.0-Spezifikation implementieren. Wir werden die folgenden SCIM 2.0-APIs für ein grundlegendes Benutzerbereitstellungsszenario verwenden, das Folgendes umfasst:
- Abrufen aller Benutzer
- Erstellen eines Benutzers
- Abrufen des erstellten Benutzers
- Aktualisieren des Benutzerprofils
- Aktualisieren der Rollen eines Benutzers
- Löschen des Benutzers
Bevor wir beginnen, müssen wir den WSO2 IS-Server starten. Dazu verwende ich die neueste Version von WSO2 IS 6.1, die auf meinem lokalen System läuft. Wenn du nicht weißt, wie das geht, lies einen unserer Blogs. Obwohl dies eine ältere Version ist, gilt das Prinzip immer noch. Aufgrund der Auslistung von Analytics kannst du jedoch den Teil über den Analytics-Server und die Vertrauensbeziehung überspringen.
Sobald der WSO2-Server aktiv ist, können die SCIM-Endpunkte wie folgt aufgerufen werden:
- Super-Mandant: https://<domain>:<port>/scim2
- Andere Mandanten: https://<domain>:<port>/t/<tenant-domain>/scim2
Ich habe WSO2 IS 6.1 gestartet, und der SCIM-Endpunkt kann über die folgende URL aufgerufen werden:
https://localhost:9443/scim2
Standardmäßig ist dieser Endpunkt mit der Basisauthentifizierung gesichert. Stelle daher sicher, dass du den Header für die Basisauthentifizierung setzt, wenn du diese APIs verwendest. In Postman kann dies mit dem Authentifizierungstyp „Basic Auth“ im Autorisierungs-Tab eingestellt werden.
Postman
Postman erleichtert das Testen der SCIM-APIs. Um die APIs zusammen mit dem Blog auszuprobieren, kannst du die Postman-Sammlung von folgendem Link herunterladen und importieren: https://bitbucket.org/yenlo/yenlo_scim-blog/src/master/scim_apis_postman_collection.json. Nach dem Import stehen alle erforderlichen APIs zur Verfügung, die auf den lokal laufenden Identity Server verweisen, um die grundlegende Benutzerbereitstellung auszuprobieren.
Ich gehe davon aus, dass du bereits Postman lokal installiert hast oder es über den Browser verwendest. Starte Postman auf deinem Betriebssystem. Sobald Postman gestartet ist, kannst du die heruntergeladene Datei importieren. Suche nach der Import-Schaltfläche und klicke darauf. Wähle die heruntergeladene Datei aus.
Wähle die heruntergeladene Datei aus.
Nun sind wir bereit, Informationen über die Benutzer abzurufen. Aus der API-Dokumentation wissen wir, dass wir eine GET-Anfrage stellen können und welche Parameter erforderlich sind.
Alle Benutzer abrufen
Wähle die Anfrage „Alle Benutzer abrufen“ in der Postman-Sammlung aus. Der Endpunkt lautet: GET: https://localhost:9443/scim2/Users
Dies gibt alle Benutzer in der IS zurück, wie unten gezeigt:
Diese Antwort enthält alle erforderlichen Benutzerdetails wie ID, Benutzername, Metadaten und die Rollen (Gruppen) des Benutzers. Die Antwort enthält auch die erforderlichen Informationen zur Unterstützung der Seitenumbruchfunktion.
Einen Benutzer erstellen
Wähle die Anfrage „Benutzer erstellen“ in der Postman-Sammlung aus. Der Endpunkt lautet: POST: https://localhost:9443/scim2/Users
Dies erstellt einen Benutzer und gibt die Details des erstellten Benutzers zurück, wie unten gezeigt:
Der erstellte Benutzer wird im primärenBenutzerdatenspeicher gespeichert. Wenn der Benutzer in einem anderen Benutzerdatenspeicher erstellt werden soll, gib bei der Erstellung des Benutzers den Benutzernamen mit dem Präfix {Domänenname}/ an.
Zum Beispiel, wenn der Benutzername „saad“ lautet und der Domänenname des sekundären Benutzerdatenspeichers „blog“ ist, sollte der Benutzername „blog/saad“ lauten. Dadurch wird der Benutzer dem angegebenen Benutzerdatenspeicher hinzugefügt.
Die ID des erstellten Benutzers wird als Variable gespeichert und wird bei der Abfrage, Aktualisierung und Löschung des Benutzers verwendet.
Den erstellten Benutzer abrufen
Wähle die Anfrage „Den erstellten Benutzer abrufen“ in der Postman-Sammlung aus. Der Benutzer kann anhand der Benutzer-ID abgerufen werden. Der Endpunkt lautet: GET: https://localhost:9443/scim2/Users/<Benutzer-ID>
Dies gibt nur den spezifischen Benutzer zurück, der der angeforderten Benutzer-ID entspricht, wie unten gezeigt:
Dies gibt die spezifischen Daten für den angeforderten Benutzer zurück.
Das Benutzerprofil aktualisieren
Wähle die Anfrage „Benutzerprofil aktualisieren“ in der Postman-Sammlung aus. Das Benutzerprofil kann anhand der Benutzer-ID aktualisiert werden. Der Endpunkt lautet: PUT: https://localhost:9443/scim2/Users/<Benutzer-ID>
Damit wird das Benutzerprofil aktualisiert, um beispielsweise die Mobiltelefonnummer hinzuzufügen:
Die Antwort enthält die aktualisierten Benutzerprofildaten, einschließlich der aktualisierten Mobiltelefonnummer des Benutzers. Mit Hilfe dieser API können auch andere Benutzerinformationen entsprechend aktualisiert werden.
Die Rollen eines Benutzers aktualisieren
Wähle die Anfrage „Alle Rollen abrufen“ in der Postman-Sammlung aus und führe die Anfrage aus, um die Rollen-IDs als Variablen zu speichern, die bei der Aktualisierung verwendet werden. Wähle dann die Anfrage „Benutzerrollen aktualisieren“ in der Postman-Sammlung aus.
Um die Rollen eines Benutzers zu aktualisieren, kann die Bulk-API verwendet werden. Es gibt APIs, die über die Group API bereitgestellt werden, um eine bestimmte Rolle zu aktualisieren und Benutzer zur Rolle hinzuzufügen oder daraus zu entfernen. Die Bulk-API kann jedoch verwendet werden, um SCIM-Ressourcen in Massen zu erstellen/aktualisieren/löschen/ersetzen. Abhängig von der im Anfrage-Payload angegebenen Operation wird die entsprechende SCIM-Ressource entsprechend verarbeitet.
Der Endpunkt lautet: POST: https://localhost:9443/scim2/Bulk
Damit werden zwei Rollen dem Benutzer hinzugefügt:
In dieser API werden mehrere Operationen angegeben, um den Benutzer zu mehreren Rollen hinzuzufügen, und die Antwort enthält für jede Operation einen Statuscode.
Den Benutzer löschen: Wähle die Anfrage „Einen Benutzer löschen“ in der Postman-Sammlung aus. Der Benutzer kann anhand der Benutzer-ID gelöscht werden. Der Endpunkt lautet: DELETE: https://localhost:9443/scim2/Users/<Benutzer-ID>
Ein bestimmter Benutzer kann wie unten gezeigt gelöscht werden, indem die Benutzer-ID angegeben wird:
Diese API gibt mit einem HTTP-Statuscode 204 zurück, um anzuzeigen, dass die Anfrage erfolgreich war. Daher wurde der Benutzer erfolgreich gelöscht.
Die oben erklärten APIs können für die grundlegende Benutzerbereitstellung mit SCIM-APIs verwendet werden. Es gibt viele weitere SCIM-APIs, die je nach Anwendungsfall genutzt werden können. Alle anderen SCIM-APIs können in der WSO2-Dokumentation überprüft werden.
Abschluss
Durch Befolgen der oben genannten Schritte kann die Benutzerbereitstellung mit dem WSO2 Identity Server unter Verwendung des SCIM-Protokolls erreicht werden.
SCIM kann in Kombination mit LDAP (Lightweight Directory Access Protocol) oder AD (Active Directory) verwendet werden, um die Benutzerbereitstellung und das Identitätsmanagement zu erleichtern. LDAP wird häufig für die Speicherung und Abrufung von Benutzeridentitäten, Attributen und Organisationsinformationen verwendet. SCIM kann mit LDAP integriert werden, um die Bereitstellung von Benutzerkonten und die Synchronisierung von Benutzerattributen zwischen dem Identitätsanbieter und dem LDAP-Verzeichnis zu automatisieren.
Ebenso kann SCIM auch mit AD integriert werden, das ein von Microsoft bereitgestellter Verzeichnisdienst für Windows-basierte Umgebungen ist. AD wird in Organisationen weit verbreitet für Benutzerauthentifizierung, Autorisierung und Identitätsmanagement eingesetzt. SCIM kann die Fähigkeiten von AD für Benutzerbereitstellung und Synchronisierung zwischen dem Identitätsanbieter und AD nutzen.