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:
- Dispatcher-filter tillåter metoderna GET, POST och OPTIONS för sökvägen
/content/cq:graphql/.*. - OSGi-konfigurationer för
ReferrerFilter,CORSFilterochCSRFPreventionFilterär inställda på att tillåta GraphQL-begäranden. - 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:
-
Lägg till sökvägar som ska tillåtas (
allow.paths):/content/cq:graphql/.*
-
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)?
-
Aktivera filtrering genom att ange
filter.enabledsom true. -
Tillåt tomma referenser genom att ange
allow.emptysom true. -
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.