403 Edge Delivery サービスを通じてルーティングされるAEM GraphQL エンドポイントの禁止エラー
AEM as a Cloud Service - Adobe Edge 配信サービスを介してルーティングされたサイトのネイティブ GraphQL エンドポイントに POST リクエストを送信すると、403 Forbidden エラーが発生します。 この問題を解決するには、リファラー OSGi 設定を更新して、GraphQL パス、信頼できるホストパターン、HTTP メソッドを明示的に許可します。
説明 description
環境
- Adobe Experience Manager(AEM)as a Cloud Service - Sites
- Adobe Edge 配信サービス(EDS)
問題/症状
GraphQLの POST リクエストは、次の条件下で成功します。
- Postmanや curl などのツールを使用してパブリッシュドメインに直接アクセスする場合。
- リクエストがローカルフロントエンド開発環境から発信された場合。
ただし、Adobe Edge 配信サービスを通じてルーティングされると、同じリクエストは 403 Forbidden 応答で失敗します。 観測値は次のとおりです。
- OPTIONSの呼び出しでは 200 OK が返されます。
- POST 呼び出しで 403 Forbidden が返される。
構成が確認されました
次の設定が正しく設定されていることを確認しました。
- Dispatcher フィルターを使用すると、パス
/content/cq:graphql/.*
に対してGET、POST およびOPTIONSの各メソッドを実行できます。 ReferrerFilter
、CORSFilter
、CSRFPreventionFilter
の OSGi 設定は、GraphQL リクエストを許可するように設定されています。- 必要なヘッダー(
Origin
、Host
、Content-Type
)が存在し、削除されません。
解決策 resolution
この問題を解決するには、次の設定でリファラー OSGi 設定(org.apache.sling.security.impl.ReferrerFilter.cfg.json
)を更新します。
-
許可する必要があるパスを追加します(
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 に設定して、空のリファラーを許可します。 -
許可される HTTP メソッドを指定:
- GET
- POST
- OPTIONS
リファラー OSGi 設定の例 :
{
"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"]
}
追加のコンテキストについては、このコミュニティのディスカッション こちらを参照してください。
recommendation-more-help
3d58f420-19b5-47a0-a122-5c9dab55ec7f