デフォルトのGraphQL Query Executor設定オプション
最新のGraphQL Java アップデートでデフォルトのパーサーオプションによって引き起こされたGraphQL クエリのサービス拒否 エラーに対処する方法について説明します。
説明 description
環境
Adobe Experience Manager
問題/症状
最新のGraphQL-Java アップデートでは、GraphQLの複雑なクエリの実行中に「サービス拒否」 InvalidSyntax エラーにつながる可能性があるデフォルトのパーサーオプションが作成されます。 これらの検証は、サービス拒否攻撃を回避するためにGraphQL-Javaで導入されました。
コンテキストについては、これらの制限はhttps://github.com/graphql-java/graphql-java/blob/v20.3/src/main/java/graphql/parser/ParserOptions.java#L35で定義されています。
解決策 resolution
次の手順に従って、カスタムパーサーオプションを渡すことで、この問題を修正できます。
-
これは、「サービス拒否」 InvalidSyntax エラーを返す非常に大きなGraphQL クエリに対して有効です。次のいずれかから始まります。
- AEM Cloud Service (リリース 2023.8の内部参照SITES-13906で導入された制限とリリース 2024.3で導入された回避策)または
- AEM 6.5.21 (内部参照SITES-17355で導入された制限と回避策)
-
これは、OSGI設定 Apache Sling Default GraphQL Query Executor を設定し、必要に応じて値 Max Query Tokens と Max Whitespaces Tokens を調整することで解決できます。
これは最後の手段として行う必要があり、プロジェクトのニーズが満たされるまで、値を徐々に増やす必要があります。
recommendation-more-help
experience-cloud-kcs-help-kbarticles