Conversation
Co-authored-by: Jesse Rosenberger <git@jro.cc>
…ient` are added to http_request span instead of subgraph_request (#8798)
Co-authored-by: Gigi Sayfan <the.gigi@gmail.com> Co-authored-by: Coenen Benjamin <benjamin.coenen@hotmail.com>
…rough externalize_header_map (#8828)
EOL of serverless plans remains Feb. 1, but a grace period until Feb. 15 has been implemented. This change clarifies the language of the discontinuation notice.
Current merge policies for `@authenticated`, `@requiresScopes` and `@policy` were inconsistent. If single subgraph declared a field with one of the directives then it would restrict access to this supergraph field regardless which subgraph would resolve this field (results in AND rule for any applied auth directive, i.e. `@authenticated` AND `@policy` is required to access this field). If the same auth directive (`@requiresScopes`/`@policy`) were applied across the subgraphs then the resulting supergraph field could be resolved by fullfilling either one of the subgraph requirements (resulting in OR rule, i.e. either `@policy` 1 or `@policy` 2 has to be true to access the field). While arguably this allowed for easier schema evolution, it did result in weakening the security requirements. Since `@policy` and `@requiresScopes` values are represent boolean conditions in Disjunctive Normal Form, we can merge them conjunctively to get the final auth requirements, i.e. ```graphql type T @authenticated { # requires scopes (A1 AND A2) OR A3 secret: String @requiresScopes(scopes: [["A1", "A2"], ["A3"]]) } type T { # requires scopes B1 OR B2 secret: String @requiresScopes(scopes: [["B1"], ["B2"]] } type T @authenticated { secret: String @requiresScopes( scopes: [ ["A1", "A2", "B1"], ["A1", "A2", "B2"], ["A3", "B1"], ["A3", "B2"] ]) } ``` This algorithm also deduplicates redundant requirements, e.g. ```graphql type T { # requires A1 AND A2 scopes to access secret: String @requiresScopes(scopes: [["A1", "A2"]]) } type T { # requires only A1 scope to access secret: String @requiresScopes(scopes: [["A1"]]) } type T { # requires only A1 scope to access as A2 is redundant secret: String @requiresScopes(scopes: [["A1"]]) } ``` Partial backport of apollographql/federation#3321 and apollographql/federation#3343 Co-authored-by: Sachin D. Shinde <sachin@apollographql.com>
…satisfiability errors (#8847) This PR updates satisfiability error messaging to align more with JS code to facilitate validation. Specifically, this PR updates witness operation generation logic to include optional arguments.
) Restricts usage of `@authenticated`, `@policy` and `@requiresScopes` from being applied on interfaces, interface objects and their fields. GraphQL spec currently does not define any interface inheritance rules and developers have to explicitly redefine all interface fields on their implementations. At runtime, GraphQL servers cannot return abstract types and always return concrete output types. Due to the above, applying auth directives on the interfaces may lead to unexpected runtime behavior as they won't have any effect at runtime. Backport of apollographql/federation@faea2d1
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: abernix <841294+abernix@users.noreply.github.com> Co-authored-by: Jesse Rosenberger <git@jro.cc> Co-authored-by: Parker <parker.ragland@apollographql.com>
…ollo-rust-builder docker tag to v0.28.0 (#8691) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Correct validation to include validation of object fields and nested objects.
Co-authored-by: Parker <parker.ragland@apollographql.com>
Adds new `validate_transitive_access_control_requirements_in_the_supergraph` post merge validation check to ensure that all fields that depends on data from other parts of the supergraph through `@requires` and/or `@fromContext` directives explicitly specify matching `@authenticated`, `@requiresScopes` and/or `@policy` auth requirements, e.g. ```graphql type T @key(fields: "id") { id: ID! extra: String @external # we need explicit @authenticated as it is needed to access extra requiresExtra: String @requires(fields: "extra") @authenticated } type T @key(fields: "id") { id: ID! extra: String @authenticated } ``` Port of apollographql/federation@99f2da2
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: phryneas <4282439+phryneas@users.noreply.github.com>
Co-authored-by: Jesse Rosenberger <git@jro.cc>
…8389) (#8825) Co-authored-by: Jon Christiansen <467023+theJC@users.noreply.github.com> Co-authored-by: Aaron Arinder <aaronarinder@gmail.com> Co-authored-by: Danielle Mallare <dmallare7@gmail.com> Co-authored-by: Jeffrey Burt <jeffrey.m.burt@gmail.com> Co-authored-by: Jesse Rosenberger <git@jro.cc> Co-authored-by: rohan-b99 <43239788+rohan-b99@users.noreply.github.com> Co-authored-by: Caroline Rodewig <16093297+carodewig@users.noreply.github.com>
Co-authored-by: Chidimma O <conwuegb@users.noreply.github.com>
✅ Docs preview readyThe preview is ready to be viewed. View the preview File Changes 0 new, 3 changed, 1 removedBuild ID: ae0fb6a61bf541640c1ad76b URL: https://www.apollographql.com/docs/deploy-preview/ae0fb6a61bf541640c1ad76b
|
…8888) Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: phryneas <4282439+phryneas@users.noreply.github.com>
Using:
claude "Apply editorial to ALL files in @./.changesets/. Ensure they match recent patterns in @./CHANGELOG.md AND that they are in compliance with the @./.github/instructions/local-only-Writing\ Style\ Guide.instructions.md , particularly the section about changesets. In general, style guide is more important than previous changelogs when considering edits."
mainbranch of an upcoming release (version number in the title).main)