403 Otillåtet fel för slutpunkter i AEM GraphQL som skickas via Edge Delivery Service

POST-begäranden till inbyggda GraphQL-slutpunkter i AEM as a Cloud Service - Webbplatser som dirigeras via Adobe Edge Delivery Service resulterar i ett 403 Forbidden -fel. Upplösningen innebär att konfigurationen för referensens OSGi-konfiguration uppdateras så att den uttryckligen tillåter GraphQL-sökvägar, betrodda värdmönster och HTTP-metoder.

Beskrivning description

Miljö

  • Adobe Experience Manager (AEM) as a Cloud Service - Sites
  • Adobe Edge Delivery Service (EDS)

Problem/symtom

GraphQL POST-begäranden lyckas på följande villkor:

  • När du får åtkomst till publiceringsdomänen direkt med verktyg som Postman eller curl.
  • När en begäran kommer från en lokal utvecklingsmiljö för frontend.

När den dirigeras via Adobe Edge Delivery Service misslyckas dock samma begäranden med ett 403 Forbidden -svar. Kommentarerna är följande:

  • OPTIONS-anrop returnerar 200 OK.
  • POST-anrop returnerar 403 Ej tillåtet.

Konfigurationerna har verifierats

Följande konfigurationer har bekräftats vara korrekt inställda:

  1. Dispatcher-filter tillåter metoderna GET, POST och OPTIONS för sökvägen /content/cq:graphql/.*.
  2. OSGi-konfigurationer för ReferrerFilter, CORSFilter och CSRFPreventionFilter är inställda på att tillåta GraphQL-begäranden.
  3. Nödvändiga rubriker (Origin, Host, Content-Type) finns och tas inte bort.

Upplösning resolution

Du löser det här problemet genom att uppdatera konfigurationen för referensOSGi (org.apache.sling.security.impl.ReferrerFilter.cfg.json) med följande inställningar:

  1. Lägg till sökvägar som ska tillåtas (allow.paths):

    • /content/cq:graphql/.*
  2. Konfigurera tillåtna värdar med reguljära uttryck för att matcha domäner (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. Aktivera filtrering genom att ange filter.enabled som true.

  4. Tillåt tomma referenser genom att ange allow.empty som true.

  5. Ange tillåtna HTTP-metoder:

    • GET
    • POST
    • OPTIONS

Exempelreferens för OSGi-konfiguration:

{
  "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"]
}

Mer information finns i den här communitydiskussionen här.

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