Тонкое управление доступом с Appsync / Firebase - PullRequest
0 голосов
/ 20 декабря 2018

Будет ли хорошей идеей создать полностью «безсерверное» приложение с помощью Appsync / Firebase, когда необходим детальный контроль доступа?

Я пытался создать приложение с Firebase, а затем с AppSync имне кажется, что эти решения немного меня калечат, и я начал думать, что, может быть, я все еще думаю о «старом» способе решения проблемы, и это то, что калечит меня, а не инструменты.

Гдея борюсь с контролем доступа.Firebase имеет «Правила Firebase», а AppSync имеет «VTL» (Apache Velocity Template Language), оба предлагают относительно хорошие решения, «Правила Firebase» проще и чище, но VTL более устойчив, потому что это в основном язык программирования.

Проблема в том, что я пытаюсь предоставить пользователю доступ к документам в базе данных на основе «коллекции / таблицы» разрешений.Таким образом, у каждого пользователя есть документ в этой «коллекции / таблице» с детальными разрешениями, и мне нужно прочитать этот документ, чтобы узнать, имеет ли он доступ к ресурсу, который он пытается читать / писать.

С обоими FireBase и AppSync я могу читать БД, но у обоих есть свои ограничения:

  • Правила Firebase имеют ограничения по запросу.и это проблематично, если у пользователя есть несколько «групп разрешений».
  • AppSync более гибок, но все еще ограничен, и я предпочитаю использовать свой предпочтительный язык, а не VTL, если я собираюсь написать некоторую логику.И, кроме того, у меня есть этот код внутри моего проекта локально, а не только в облаке, доступный через графический интерфейс.

Так что, в конце концов, кажется, что оба решения заставляют меня иметь еще один уровень, прежде чемих для того, чтобы делать более сложные вещи, так что это могут быть либо функции, либо целое приложение.Но тогда зачем мне все их API?Наличие еще одного слоя до Appsync / Firebase в основном заставляет меня переопределить API GraphQL / Firebases, а затем, почему бы не создать его с помощью другого инструмента?

Итак, я все делаю неправильно?Будет ли лучше иметь приложение, развернутое в AppEngine или аналогичном решении (и, следовательно, потерять преимущества функций)?

Примечание. Извините, если после прочтения этого текста все еще не ясно, английский - мой первый язык.

1 Ответ

0 голосов
/ 20 декабря 2018

AWS AppSync недавно добавила конвейерные резольверы, что звучит как идеальное решение для вашего случая использования.Вы составляете распознаватель GraphQL с помощью цепочки функций резолвера.Ваша проверка подлинности по таблице сбора документов может быть реализована как функция многократного использования.

Посмотрите учебник Pipeline Resolvers , чтобы узнать, отвечает ли он вашим потребностям.

...