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:

  1. Dispatcher-Filter ermöglichen GET-, POST- und OPTIONS-Methoden für die /content/cq:graphql/.*.
  2. OSGi-Konfigurationen für ReferrerFilter, CORSFilter und CSRFPreventionFilter sind so eingestellt, dass sie GraphQL-Anfragen zulassen.
  3. 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:

  1. Fügen Sie Pfade hinzu, die zulässig sein sollen (allow.paths):

    • /content/cq:graphql/.*
  2. 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)?
  3. Aktivieren Sie die Filterung, indem Sie filter.enabled auf true“.

  4. Lassen Sie leere Referrer zu, indem Sie allow.empty auf true“.

  5. 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.

recommendation-more-help
3d58f420-19b5-47a0-a122-5c9dab55ec7f