403 Error prohibido para los extremos de AEM GraphQL enrutados a través del servicio Edge Delivery
Realizar solicitudes POST en puntos finales nativos de GraphQL en AEM as a Cloud Service: los sitios enrutados mediante el servicio de entrega perimetral de Adobe provocan un error 403 prohibido. La resolución implica actualizar la configuración OSGi del referente para permitir explícitamente rutas GraphQL, patrones de host de confianza y métodos HTTP.
Descripción description
Entorno
- Adobe Experience Manager (AEM) as a Cloud Service - Sitios
- Adobe Edge Delivery Service (EDS)
Problema/Síntomas
Las solicitudes de GraphQL POST se realizan correctamente en las siguientes condiciones:
- Al acceder al dominio de publicación directamente mediante herramientas como Postman o curl.
- Cuando las solicitudes se originan en un entorno de desarrollo de front-end local.
Sin embargo, cuando se enrutan a través del servicio de entrega perimetral de Adobe, las mismas solicitudes fallan con una respuesta 403 Prohibido. Las observaciones incluyen:
- Las llamadas de OPTIONS devuelven 200 OK.
- Las llamadas POST devuelven 403 prohibido.
Configuraciones verificadas
Se confirmó que las siguientes configuraciones están correctamente configuradas:
- Los filtros de Dispatcher permiten los métodos GET, POST y OPTIONS para la ruta de acceso
/content/cq:graphql/.*
. - Las configuraciones de OSGi para
ReferrerFilter
,CORSFilter
yCSRFPreventionFilter
están configuradas para permitir solicitudes de GraphQL. - Los encabezados obligatorios (
Origin
,Host
,Content-Type
) están presentes y no se han eliminado.
Resolución resolution
Para resolver este problema, actualice la configuración OSGi de referente (org.apache.sling.security.impl.ReferrerFilter.cfg.json
) con la siguiente configuración:
-
Agregar rutas de acceso permitidas (
allow.paths
):/content/cq:graphql/.*
-
Configure los hosts permitidos mediante expresiones regulares para que coincidan con los dominios (
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)?
-
Habilite el filtrado estableciendo
filter.enabled
en true. -
Permitir referentes vacíos estableciendo
allow.empty
en true. -
Especifique los métodos HTTP permitidos:
- GET
- PUBLICAR
- OPTIONS
Configuración OSGi de referente de muestra:
{
"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"]
}
Para obtener contexto adicional, consulte esta discusión de la comunidad aquí.