Estoy usando graphql-shield en un subgrafo y rover-cli para generar el esquema.
Establecí la regla de reserva para denegar todo, ya que no quiero que se pueda acceder a nada de forma predeterminada. Pero ahora rover-cli falla al introspeccionar el subgrafo. Soy consciente de que puede pasar un token al móvil, pero no puedo hacerlo durante mi proceso de construcción.
Ya analicé este problema:Apollo Server Federation con graphql-shield y en ambos graphql-shield y rover GitHub, pero hasta ahora no tuve suerte.
También intenté agregar explícitamente SubgraphIntrospectQuery así:
export const permissions = shield( { Query: { SubgraphIntrospectQuery: allow, }, }, { fallbackRule: deny, debug: true, allowExternalErrors: true, } );¡Gracias por tu ayuda!
Prueba esto:
export const permissions = shield({ Query: { _service: allow, }, _Service: { sdl: allow } },{ fallbackRule: deny, debug: true, allowExternalErrors: true, });Esto parece ser lo que usa Apolo cuando realiza la introspección. Es posible que también deba permitir: "Query._entities", "Query._service", "_Entity.*", "_Service.*", "_Any.*", ya que Apollo también los utiliza.
Probablemente debería implementar alguna forma de seguridad en lugar de usar "permitir" para estos, pero espero que esto responda a su pregunta...