Kopflose Magnolia: REST-Endpunkt-Sicherheit und CORS
Aug. 5, 2021
--
Security Configuration and CORS 1200x628

Kopflose Magnolia: REST-Endpunkt-Sicherheit und CORS

Wenn Sie Magnolia als Headless Content Management kennenlernen möchten, aber nicht wissen, wo Sie anfangen sollen, sind Sie hier genau richtig. Im Rahmen unserer "Headless Magnolia"-Serie werden wir relevante Funktionen aufschlüsseln, die es Ihnen ermöglichen, Magnolia als Headless CMS zu nutzen. In diesem Artikel gehen wir auf die Sicherheit von REST-Endpunkten und CORS ein.

Sicherheit der REST-Endpunkte

REST-Endpunkte sind ein leistungsfähiges Werkzeug, aber wenn sie falsch gesichert sind, können sie eine Website dem Zugriff Unbefugter aussetzen. Um Ihre Daten zu schützen, blockiert Magnolia standardmäßig alle Zugriffe über REST, einschließlich veröffentlichter und öffentlich zugänglicher Website-Daten.

Es spricht nichts dagegen, anonymen Zugriff auf öffentliche Daten zu gewähren, z. B. um einem SPA oder einem anderen Frontend zu ermöglichen, diese Daten abzurufen. Sie können selektiv anonymen Zugriff auf bestimmte Endpunkte gewähren oder einen benutzerbasierten Zugriff mit "einfacher" HTTP-Authentifizierung konfigurieren "einfache" HTTP-Authentifizierung.

Wenn eine REST-Anfrage gestellt wird, gelten drei Ebenen der Kontrolle:

  • Web-Zugang

  • JCR-Zugang

Die Berechtigungen für REST-Endpunkte werden in der Security-App über die rollenbasierte Zugriffskontrolle von Magnolia verwaltet.

Verwaltung des Zugangs

Das Zugriffsmanagementsystem von Magnolia bietet die Möglichkeit, sich bei Anwendungen anzumelden und Benutzer zu authentifizieren, um ihre Identität zu überprüfen. Außerdem autorisiert es Benutzer für Aktionen wie die Bearbeitung von Seiten und stellt sicher, dass sie über die erforderlichen Berechtigungen verfügen.

Die App "Sicherheit" dient der Verwaltung des Systemzugangs durch die Verwaltung von Benutzern, Benutzergruppen und Benutzerrollen.

1 roles

Sie können die Sicherheitseinstellungen Ihres Systems auf zwei Arten ändern:

  • Ändern Sie eine bestehende Rolle

  • Eine neue Rolle erstellen und sie einem bestehenden Benutzer zuweisen

Zugang zum Internet

Der Webzugang wird für jeden Endpunkt geprüft. Der Filter prüft, ob die Rollen des Benutzers ihm erlauben, einen bestimmten Pfad mit einer bestimmten Methode anzufordern.

Web-Berechtigungen werden Rollen in Form von Web-Zugriffslisten zugewiesen:

  • Erhalten: Gewährt die HTTP-Methode GET für einen bestimmten URI.

  • Get & Post: Gewährt die HTTP-Methoden GET

  • PUT
  • POST und DELETE für einen bestimmten URI.

Standardmäßig hat Magnolia die Rolle "rest-anonymous", die dem Systembenutzer "anonymous" zugewiesen ist. Jede Anfrage, die nicht explizit autorisiert ist, verwendet diesen Benutzer. Die Rolle "rest-anonymous" gewährt Get-Berechtigungen für Magnolias REST-API zur Bereitstellung von Inhalten:

2 rest-anonymous

Tipp: Magnolia hat eine Standard-Benutzerrolle namens 'rest-anonymous'. Sie gewährt dem anonymen Benutzer Zugriff auf den Pfad /.rest/delivery/*. Um Daten vom Delivery-Endpunkt abzurufen, verwenden Sie "delivery" als Teil des Endpunktpfads.

Headless Magnolia: The Delivery Endpoint API

The Headless Magnolia series explains how to use Magnolia as a headless CMS. Use the Delivery endpoint API to consume content and assets from any front end.

JCR-Zugang

Die JCR-Zugriffssicherheit ist ein Merkmal des JCR-Standards und gilt für jeden Endpunkt, der JCR-Daten liest oder schreibt.

Sie können einer Rolle pro Arbeitsbereich auf Pfadebene nur Lese- oder Lese-/Schreibrechte erteilen.

3 rest-anonymous

Tipp: Um die JCR-Sicherheit zu umgehen, können Sie die Endpunktkonfigurationseigenschaft "bypassWorkspaceAcls" auf true setzen. Verwenden Sie diese Eigenschaft mit Vorsicht und nur für Entwicklungszwecke.

CORS

Cross-Origin Resource Sharing (CORS) ist ein Mechanismus, der HTTP-Header verwendet, um Browser anzuweisen, Ressourcen von einem anderen Ursprung (Domäne, Protokoll oder Port) als dem ursprünglichen zu laden.

Die folgenden CORS-Filter sind in Magnolia 6.2.4 und höher verfügbar:

  • Globaler CORS-Filter 'SelfConfiguredCorsFilter'

  • Standortbezogener CORS-Filter 'SiteAwareCorsFilter'

Filter werden in der Magnolia-Filterkette in der Konfigurations-App unter /server/filters/cors angegeben.

4 configuration

Globaler CORS-Filter

Der SelfConfiguredCorsFilter ist ein globaler CORS-Filter, dessen Eigenschaften z. B. im Server konfiguriert werden:

Java
  server: filter: cors: class: info.magnolia.cors.SelfConfiguredCorsFilter uris: rest: patternString: /.rest/* allowedOrigins: - https://example.com - https://magnolia-cms.com allowedMethods: - GET - OPTIONS - POST allowedHeaders: - '*'  

Standortbezogener CORS-Filter

In einem Multisite-Setup wird ein SiteAwareCorsFilter für jede Site separat in der Site-App oder z. B. unter /modules/multisite/config/sites/<site-name>/cors konfiguriert:

Java
  modules: multisite: config: sites: travel: cors: travel: uris: rest: patternString: /.rest/* allowedOrigins: - '*' allowedMethods: - GET allowedHeaders: - Accept - Content-Type - Origin - X-PINGOTHER - X-Requested-With  

Wenn Sie einen SiteAwareCorsFilter verwenden, stellen Sie sicher, dass dieser auch auf dem Server konfiguriert ist:

Java
  Server: Filter: cors: Klasse: info.magnolia.module.site.filters.SiteAwareCorsFilter  

Erfahren Sie mehr über die Headless-Funktionen von Magnolia

Diese Serie über die kopflose Magnolie wird folgende Themen behandeln:

  1. Die Delivery Endpoint API

  2. REST Endpunkt Sicherheit und CORS (Sie sind hier)

  3. SPAs für die Bearbeitung in Magnolia konfigurieren

  4. Aufbau einer einfachen SPA mit Magnolia Templates

  5. Virtuelle URI-Zuordnung

  6. Nodes Endpoint API und Commands Endpoint API

  7. Vererbung in Headless Magnolia

Über den autor

Bartosz Staryga

Front-End Solution Architect, Magnolia

Bartosz is an expert in headless content management and front-end development at Magnolia. He designs and develops new Magnolia features and supports customers with their headless implementations from content types to APIs to integrations. Bartosz enjoys building new things and seeing them in action. He is also a trainer for Magnolia’s Headless training.