WSO2 Identity Server (IS) unterstützt verschiedene Authentifizierungsprotokolle wie SAML2, OpenID und WS-Federation Passive, um unterschiedliche Anwendungen von Dienstanbietern reibungslos und standardkonform zu integrieren. Nach der Integration von Service Providern in WSO2 IS wird die Benutzerauthentifizierung für Service Provider von WSO2 IS übernommen.
Auch wenn die Anmeldung zentralisiert ist, können Service-Provider die Anforderung haben, den Zugriff für bestimmte Benutzer zu erlauben oder einzuschränken, indem sie bestimmte Autorisierungsregeln durchsetzen. Eine Anwendung eines HR-Dienstleisters erlaubt beispielsweise nur Benutzern mit einer HR-Rolle den Zugriff auf die Anwendung und muss anderen Benutzern den Zugriff verweigern.
Die Funktion XACML in WSO2 IS erzwingt verschiedene Arten der Autorisierung im Login-Flow. In diesem Blogbeitrag wird erläutert, wie WSO2 IS so konfiguriert werden kann, dass eine rollenbasierte Autorisierung mit XACML durchgeführt wird, wenn ein Benutzer versucht, sich bei einem Service Provider anzumelden.
PICKUP DISPATCH ist eine Webanwendung, die so konfiguriert ist, dass sie WSO2 IS für die Benutzerauthentifizierung verwendet. Identity Server verfügt über zwei verschiedene Arten von Benutzern, Manager und Mitarbeiter. Der Manager-Benutzer hat die Rolle des Managers und der Mitarbeiter-Benutzer hat die Rolle des Mitarbeiters. Der Zugang zur Webanwendung sollte nur dem Manager erlaubt und für die Mitarbeiter eingeschränkt sein.
Zur Ausführung des Beispiels in diesem WSO2-Tutorial müssen die folgenden Voraussetzungen gegeben sein:
- WSO2 Identity Server 5.10.0
- Apache Tomcat 0.29
- Beispiel-Webanwendung – pickup-war
Schritt 1 – Konfigurieren Sie den Service Provider
- Konfigurieren Sie den Service Provider für die Pickup-Dispatch-Anwendung. Gehen Sie zu Dienstanbieter > Klicken Sie auf Add > Wählen Sie Manual Configuration Mode > Registrieren Sie einen Service Provider mit dem Namen “pickup-dispatch”
- Erweitern Sie Konfiguration für eingehende Authentifizierung > OAuth/OpenID Connect Configuration > Configure
- Registrieren Sie die Call-Back-URL als http://localhost.com:8080/pickup-dispatch/oauth2client und klicken Sie auf Hinzufügen.
- Notieren Sie sich den OauthClientKey und das OauthClientSecret des Service Providers zur späteren Verwendung.
- Erweitern Sie Konfiguration der lokalen und ausgehenden Authentifizierung > Aktivieren Sie das Kontrollkästchen Enable Authorization
- Klicken Sie auf Update, um die Konfiguration des Service Providers zu speichern.
Schritt 2 – Konfigurieren Sie die XACML Policy
- Öffnen Sie Entitlement-> Policy Administration -> authn_role_based_policy_template
- Diese Vorlage dient der Autorisierung des Benutzers auf der Grundlage der Benutzerrolle im Authentifizierungsfluss
- Konfigurieren Sie die Vorlage:
- Ersetzen Sie die Policy ID durch einen eindeutigen Namen g „pickup-dispatch-role-based-access“
- Ersetzen Sie SP_Name durch den Namen des Dienstanbieters „pickup-dispatch“
- Ersetzen Sie ROLE_1 durch die Rolle „manager“ (in diesem Beispiel hat ein Benutzer mit der Rolle manager nur Zugriff auf die Dienstleister-App
- Entfernen Sie den Abschnitt ROLE_2 (in diesem Beispiel wird nur eine Rolle verwendet, aber mehrere Rollen können durch Erweiterung der Vorlage behandelt werden)
- Speichern Sie die Policy > Publish to MyPDP
Schritt 3 – Benutzer und Rollen erstellen
- Erstellen Sie die Rollen Manager und Mitarbeiter. Benutzer und Rollen > Add > Neue Rolle hinzufügen > Geben Sie den Rollennamen ein > Klicken Sie auf Next > Geben Sie die Anmeldeberechtigung ein > Klicken Sie auf Finish
- Erstellen Sie Manager- und Mitarbeiter-Benutzer und ordnen Sie die Manager-Rolle dem Manager und die Mitarbeiter-Rolle dem Mitarbeiter zu. Benutzer und Rollen > Add > Neue Benutzer hinzufügen > Benutzername und Anmeldedaten eingeben > Next klicken > Rollen zuweisen > Finish klicken“
Schritt 4 – Einrichten einer Beispiel-Webanwendung
- Entpacken Sie die Webanwendung pickup-war nach apache-tomcat/webapps
- Öffnen Sie dispatch.properties unter: pickup-dispatch/WEB-INF/classes
- Ersetzen Sie die Werte consumerKey und consumerSecret durch den OAuth-Client-Schlüssel und das OAuth-Client-Geheimnis des zuvor erstellten Dienstanbieters. Aktualisieren Sie den Wert von scope auf „openid internal_application_mgt_view“.
- Starten Sie den Tomcat-Server
Schritt 5 – Anmeldung überprüfen
- Fügen Sie die Hostzuordnung zu localhost.com in der Datei etc/hosts hinzu: 127.0.0.1 localhost.com
- Greifen Sie auf die gehostete Webanwendung zu: http://localhost.com:8080/pickup-dispatch/index.jsp
- Melden Sie sich als Personalbenutzer an, dem die Rolle Personal zugewiesen ist. Als Ergebnis würde die Authentifizierung aufgrund einer fehlgeschlagenen Autorisierung fehlschlagen.
- Melden Sie sich als Manager-Benutzer an, dem die Manager-Rolle zugewiesen ist. Als Ergebnis würde die Anmeldung mit der Benutzerrollenberechtigung erfolgreich sein.
Fazit
WSO2 Identity Server unterstützt standardmäßig die Einbindung von XACML-Richtlinien in den Authentifizierungsfluss, um Berechtigungsanforderungen durchzusetzen. XACML lässt sich nicht nur zur Durchsetzung rollenbasierter Autorisierung verwenden, sondern auch für die Durchsetzung anderer fein abgestufter Zugriffskontrollen. Beispielsweise kann der Zugriff auf einen Dienstanbieter innerhalb eines bestimmten Zeitraums eingeschränkt oder der Zugriff auf einen Dienstanbieter auf der Grundlage von Anspruchswerten des Benutzers gewährt werden usw.
Falls dieser Blog noch Fragen für Sie offen lässt, kontaktieren Sie uns.