Так как вы собираетесь иметь контейнер для каждого пользователя (на данный момент я приравнять пользователь с тем, что вы назвали приложение идентификатора пользователя), что означает, что вы У вас будет учетная запись хранилища, которая может содержать множество разных контейнеров для многих пользователей. Если вы хотите, чтобы приложение имело возможность загружать только один конкретный контейнер, в то время как чтение из многих двух вариантов приходит на ум.
Первый: создайте API, который живет где-то, который обрабатывает все запросы. За API ваш код будет иметь полный доступ ко всей учетной записи хранилища, поэтому ваша бизнес-логика определит, что они делают и не имеют доступа. Поверхность этого заключается в том, что вам вообще не нужно создавать сигнатуры общего доступа (SAS). Ваше приложение знает, как разговаривать с API. Вы даже можете комбинировать данные, которые они могут видеть в этом сводке контента, делая параллельные вызовы для получения содержимого из различных контейнеров из одного вызова из приложения. Недостатком является то, что теперь у вас есть эта служба API, которая должна бронировать ВСЕ эти вызовы. Вам все равно понадобится служба API для генерации SAS, если вы идете по этому маршруту, но это было бы необходимо только для создания SAS, и клиентские приложения будут делать вызовы напрямую с помощью службы хранения Windows Azure с нагрузкой, которая уменьшит ресурсы вам действительно нужно.
Во-вторых: Идите по маршруту SAS и создайте SAS по мере необходимости, но это будет немного сложно.
На каждый контейнер можно создать до пяти политик сохраненного доступа. Для одного из этих пяти вы создаете одну политику для «владельца» контейнера, которая дает им разрешения на чтение и запись. Теперь, поскольку вы разрешаете людям давать разрешения на чтение другим людям, вы нажимаете на ограничение количества политик, если вы не повторно используете одну и ту же политику для чтения, но тогда вы не сможете отменить ее, если пользователь удалит кого-либо из своих «доверенный» список читателей.Например, если я предоставил разрешения как для Боба, так и для Джеймса для моего контейнера, и они оба получили копию Read SAS, если мне нужно было удалить Боба, мне пришлось бы отменить прочитанную политику, которую они поделили, и переиздать новый Read SAS к Джеймсу. На самом деле это не так уж и плохо, поскольку приложение может обнаружить, когда у него больше нет разрешений и просят обновить SAS.
В любом случае вы все еще хотите, чтобы политика была короткой. Если бы я удалил Боб из моих доверенных читателей, я бы очень хотел, чтобы он немедленно отрезал его. Это означает, что вы вернетесь, чтобы получить обновленную версию SAS и воссоздать подписанную подпись доступа, которая снижает полезность подписанных политик доступа. Это зависит от вашего живота от того, как долго вы планируете позволить политике жить и как быстро вы хотите, чтобы кто-то отрезал, если они были «ненадежны».
Теперь лучшим вариантом может быть то, что вы создаете Ad-hoc-сигнатуры. Вы можете иметь столько подписей Ad-hoc, сколько хотите, но их нельзя отменить и может длиться максимум один час. Поскольку вы сделаете их недолговечными, длина или отсутствие отзыва не должны быть проблемой. Переход по этому маршруту будет означать, что вы должны вернуть приложение, чтобы получить их по мере необходимости, но, учитывая то, о чем я упоминал выше, когда кто-то был удален, и вы хотите, чтобы SAS закончилось, это может быть неважным. Как вы уже указали, это увеличивает сложность вещей, потому что вы генерируете множество SAS; однако, если вы являетесь ad-hoc, вам не нужно их отслеживать.
Если вы собираетесь ехать по маршруту SAS, я бы предположил, что ваш API будет генерировать ad-hoc при необходимости. Они не должны длиться более нескольких минут, так как у людей может быть разрешение на удаление контейнера, и все, что вы пытаетесь сделать, это уменьшить нагрузку на размещенную службу для фактического выполнения загрузки и загрузки. Опять же, вся логика обработки контейнеров, которые кто-то может видеть, все еще находится в вашей службе API, и приложения просто получают подписи, которые они могут использовать в течение небольших периодов времени.
Благодарим вас за подробный, продуманный ответ. Я буду перечитывать это несколько раз завтра, я уверен! – BenjiFB