403 Verbotener Fehler für AEM GraphQL-Endpunkte, die über den Edge Delivery-Service weitergeleitet werden
POST-Anfragen an native GraphQL-Endpunkte in AEM as a Cloud Service - Sites, die über den Adobe Edge-Bereitstellungs-Service weitergeleitet werden, führen zu einem 403 Forbidden Fehler. Die Auflösung umfasst die Aktualisierung der Referrer-OSGi-Konfiguration, um explizit GraphQL-Pfade, vertrauenswürdige Host-Muster und HTTP-Methoden zuzulassen.
Beschreibung description
Umgebung
- Adobe Experience Manager (AEM) as a Cloud Service - Sites
- Adobe Edge Delivery Service (EDS)
Problem/Symptome
GraphQL-POST-Anfragen werden unter folgenden Bedingungen erfolgreich ausgeführt:
- Beim direkten Zugriff auf die Veröffentlichungs-Domain mithilfe von Tools wie Postman oder curl.
- Wenn Anfragen von einer lokalen Frontend-Entwicklungsumgebung stammen.
Bei der Weiterleitung über den Adobe Edge-Bereitstellungs-Service schlagen dieselben Anfragen jedoch mit einer "403 Forbidden“- fehl. Zu den Beobachtungen gehören:
- OPTIONS-Aufrufe geben 200 OK).
- POST-Aufrufe geben 403 Verboten zurück.
Konfigurationen überprüft
Die folgenden Konfigurationen wurden als korrekt festgelegt bestätigt:
- Dispatcher-Filter ermöglichen GET-, POST- und OPTIONS-Methoden für die
/content/cq:graphql/.*. - OSGi-Konfigurationen für
ReferrerFilter,CORSFilterundCSRFPreventionFiltersind so eingestellt, dass sie GraphQL-Anfragen zulassen. - Erforderliche Kopfzeilen (
Origin,Host,Content-Type) sind vorhanden und werden nicht entfernt.
Auflösung resolution
Um dieses Problem zu beheben, aktualisieren Sie die Referrer-OSGi-Konfiguration (org.apache.sling.security.impl.ReferrerFilter.cfg.json) mit den folgenden Einstellungen:
-
Fügen Sie Pfade hinzu, die zulässig sein sollen (
allow.paths):/content/cq:graphql/.*
-
Konfigurieren zulässiger Hosts mit regulären Ausdrücken, um Domains abzugleichen (
allow.hosts.regexp):https://.*\.adobe\.com(:443)?https://.*\.adobe\.net(:443)?https://.*\.workfront\.com(:443)?https://.*\.workfront-dev\.com(:443)?https://.*\.dev\.workfront\.tech(:443)?https://.*\.aem\.live(:443)?
-
Aktivieren Sie die Filterung, indem Sie
filter.enabledauf true“. -
Lassen Sie leere Referrer zu, indem Sie
allow.emptyauf true“. -
Geben Sie die zulässigen HTTP-Methoden an:
- GET
- POST
- OPTIONS
OSGi-Beispielkonfiguration für Referrer:
{
"allow.paths": [
"/content/cq:graphql/.*",
] ,
"allow.hosts.regexp": [
"https://.*\\.adobe\\.com(:443)?",
"https://.*\\.adobe\\.net(:443)?",
"https://.*\\.workfront\\.com(:443)?",
"https://.*\\.workfront-dev\\.com(:443)?",
"https://.*\\.dev\\.workfront\\.tech(:443)?",
"https://.*\\.aem\\.live(:443)?"
] ,
"filter.enabled": true,
"allow.empty": true,
"allow.methods": [ "GET", "POST", "OPTIONS"]
}
Weitere Informationen finden Sie in dieser Community-Diskussion hier.