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.
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:
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.
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.
Globaler CORS-Filter
Der SelfConfiguredCorsFilter ist ein globaler CORS-Filter, dessen Eigenschaften z. B. im Server konfiguriert werden:
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:
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:
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:
REST Endpunkt Sicherheit und CORS (Sie sind hier)
Virtuelle URI-Zuordnung
Nodes Endpoint API und Commands Endpoint API