将 Rover 与 graphql-shield 一起使用

Use Rover with graphql-shield

我在子图上使用 graphql-shield 并使用 rover-cli 生成架构。

我已将回退规则设置为拒绝所有内容,因为我不希望默认情况下可以访问任何内容。但是现在 rover-cli 在内省子图时失败了。我知道您可以将令牌传递给流动站,但我在构建过程中无法这样做。

我已经看过这个问题: 以及 graphql-shieldrover GitHub 存储库,但到目前为止运气不好。

我也试过像这样显式添加 SubgraphIntrospectQuery

export const permissions = shield(
  {
    Query: {
      SubgraphIntrospectQuery: allow,
    },

  },
  {
    fallbackRule: deny,
    debug: true,
    allowExternalErrors: true,
  }
);

感谢您的帮助!

试试这个:

export const permissions = shield({
    Query: {
        _service: allow,
    },
    _Service: {
        sdl: allow
    }
},{
    fallbackRule: deny,
    debug: true,
    allowExternalErrors: true,
});

这似乎是 Apollo 在执行内省时使用的。您可能还需要允许:“Query._entities”、“Query._service”、“_Entity.*”、“_Service.*”、“_Any.*”,因为这些也被 Apollo 使用。

您可能应该实施某种形式的安全措施而不是对这些使用“允许”,但我希望这能回答您的问题...