fb
Identity & Access Management 3 Minuten

Mit WSO2 Identity Server die Autorisierung für Service Provider durchsetzen

jenanathan-yogendran.jpg
Jenanathan Yogendran
Integration Consultant
Enforce authorization WSO2 Identity Server
Scrollen

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.

yenlo_blog_2020-06-11_enforce-authorization-for-service-provider_figure-1

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
yenlo_blog_2020-06-11_enforce-authorization-for-service-provider_figure-2
  • Erweitern Sie Konfiguration für eingehende Authentifizierung > OAuth/OpenID Connect Configuration > Configure
yenlo_blog_2020-06-11_enforce-authorization-for-service-provider_figure-3
yenlo_blog_2020-06-11_enforce-authorization-for-service-provider_figure-4
  • Notieren Sie sich den OauthClientKey und das OauthClientSecret des Service Providers zur späteren Verwendung.
yenlo_blog_2020-06-11_enforce-authorization-for-service-provider_figure-5
  • Erweitern Sie Konfiguration der lokalen und ausgehenden Authentifizierung > Aktivieren Sie das Kontrollkästchen  Enable Authorization
yenlo_blog_2020-06-11_enforce-authorization-for-service-provider_figure-6
  • 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
yenlo_blog_2020-06-11_enforce-authorization-for-service-provider_figure-7
  • Diese Vorlage dient der Autorisierung des Benutzers auf der Grundlage der Benutzerrolle im Authentifizierungsfluss
yenlo_blog_2020-06-11_enforce-authorization-for-service-provider_figure-8
  • 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)
yenlo_blog_2020-06-11_enforce-authorization-for-service-provider_figure-9
  • Speichern Sie die Policy > Publish to MyPDP
yenlo_blog_2020-06-11_enforce-authorization-for-service-provider_figure-10
yenlo_blog_2020-06-11_enforce-authorization-for-service-provider_figure-11

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
yenlo_blog_2020-06-11_enforce-authorization-for-service-provider_figure-12
yenlo_blog_2020-06-11_enforce-authorization-for-service-provider_figure-14
  • 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“
yenlo_blog_2020-06-11_enforce-authorization-for-service-provider_figure-15
yenlo_blog_2020-06-11_enforce-authorization-for-service-provider_figure-16

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“.
yenlo_blog_2020-06-11_enforce-authorization-for-service-provider_figure-17
  • Starten Sie den Tomcat-Server

Schritt 5 – Anmeldung überprüfen

yenlo_blog_2020-06-11_enforce-authorization-for-service-provider_figure-18
  • Melden Sie sich als Personalbenutzer an, dem die Rolle Personal zugewiesen ist. Als Ergebnis würde die Authentifizierung aufgrund einer fehlgeschlagenen Autorisierung fehlschlagen.
yenlo_blog_2020-06-11_enforce-authorization-for-service-provider_figure-19
  • Melden Sie sich als Manager-Benutzer an, dem die Manager-Rolle zugewiesen ist. Als Ergebnis würde die Anmeldung mit der Benutzerrollenberechtigung erfolgreich sein.
yenlo_blog_2020-06-11_enforce-authorization-for-service-provider_figure-20

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.