Платформа API Безопасность GraphQL - PullRequest
1 голос
/ 14 января 2020

Таким образом, я использую платформу API в своем проекте Symfony 4, и я прочитал, что она поддерживает graphQl, поэтому я настроил контроль доступа в security.yml, чтобы позволить пользователям получать доступ к API GraphQl:

- { path: ^/api/graphql, roles: IS_AUTHENTICATED_ANONYMOUSLY }

И в каждой сущности у меня есть элементы управления доступом для itemOperations и collectinOperations. Пример:

 * @ApiResource(
 *     itemOperations={
 *         "get"={
 *             "access_control"="is_granted('ROLE_ADMIN')"
 *         }
 *     },
 *     collectionOperations={
 *         "get"={
 *             "access_control"="is_granted('ROLE_ADMIN')"
 *         }
 *     }
 * )

Но проблема в том, что любой пользователь может получить доступ к этой сущности через graphQL, потому что graphQL игнорирует элементы управления доступом для этих операций. Есть ли способ заставить graphQL следовать этим правилам?

1 Ответ

1 голос
/ 14 января 2020

itemOperations и collectionOperations не связаны с GraphQL, а только с REST.

Вам необходимо добавить элементы управления доступом в операции GraphQL или, если вы хотите настроить таргетинг на REST и GraphQL (но без различения операций), вы можете добавить его как attribute.

Кроме того, access_control не рекомендуется. Вместо этого следует использовать security.

Вы также можете прочитать эту документацию: https://api-platform.com/docs/core/graphql/#security

...