0

Я разработки Azure приложение, использующее этот стек:Какова наилучшая практика для управления защитой от мутантов в Breeze?

(Клиент) Угловое/Бриз

(Server) Web API/Breeze Server/Entity Framework/SQL Server

С каждым запросом я хочу чтобы пользователь фактически имел авторизацию для выполнения этого действия с использованием кода на стороне сервера. Мой вопрос заключается в том, как наилучшим образом реализовать это в контексте Breeze/Web API.

ли лучшая стратегия:

  1. Изменение API контроллера Web и попытаться проанализировать содержание запроса Breeze перед передачей его дальше вниз по цепочке?

  2. Измените метод EFContextProvider и добавьте тест авторизации на каждый выставленный метод?

  3. Переместить безопасность всех в уровень базы данных и убедиться, что GUID GUID и GUID арендатора являются обязательными для каждого запроса и возвращают только соответствующие данные?

  4. Другое решение или какая-либо комбинация вышеуказанного?

ответ

1

Если вы используете Sql Azure, тогда один из вариантов - использовать Azure Federation для выполнения именно этого.

В очень упрощенном виде, если у вас есть TenantId в вашей таблице, в котором хранятся данные от нескольких арендаторов, то перед выполнением запроса, такого как SELECT Col1 FROM Table1, вы выполняете инструкцию USE FEDERATION ..., чтобы ограничить результаты запроса конкретным TenantId только, и вам не нужно, чтобы добавить WHERE TenantId = @ TenantId к вашему запросу,

USE ФЕДЕРАЦИЯ пример: http://msdn.microsoft.com/en-us/library/windowsazure/hh597471.aspx

Обратите внимание, что использование Sql Azure Федерации поставляется с большим количеством строк, прикрепленных, когда речь идет о Создание схемы БД - один из лучших блогов, которые я нашел об этом, - http://blogs.msdn.com/b/cbiyikoglu/archive/2011/04/16/schema-constraints-to-consider-with-federations-in-sql-azure.aspx.

+0

Разум, раздутый этим (в хорошем смысле). Это выглядит превосходно, но когда я читаю, я ожидаю, что какой-то хот, вроде «должен использовать Azure Access Control Services» или «работает только с Azure Active Directory»! – Graham

+1

Нет Gotchas вот так! просто определенное соображение в схеме БД. В основном 1) Каждая федеративная таблица должна иметь TenantId, и она должна быть частью ключа Parimary. 2) Нет столбцов IDENTITY. 3) Нет JOINS с таблицей в Корневой БД. 3) Таблица справочных данных должна жить в каждой федерации, там немного других, которые вы читали на. Наше приложение является небольшим размером прямо сейчас и нуждается только в одной федерации, мы используем ту же самую схему для облачной версии и по существующей версии приложения. – pateketu

Смежные вопросы