デフォルトの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 TokensMax Whitespaces Tokens を調整することで解決できます。

これは最後の手段として行う必要があり、プロジェクトのニーズが満たされるまで、値を徐々に増やす必要があります

recommendation-more-help
experience-cloud-kcs-help-kbarticles