Я пытаюсь безопасно предоставлять изображения / видео из моего приложения asp.net и изо всех сил пытаюсь найти эффективный способ сделать это.
Я использую WebAPI с пользовательской аутентификацией. Пользователь получает токен при входе в систему и затем отправляет его при каждом запросе в HTTP-заголовке авторизации. Таким образом, я могу убедиться, что только зарегистрированные пользователи могут получить доступ к защищенным функциям API.
Однако IIS также предоставляет изображения и видео для этих пользователей, и они также должны быть защищены. Также пользователи будут иметь разные права на доступ к этим файлам.
Я попробовал несколько подходов:
Я могу создать настраиваемый управляемый обработчик, который будет обслуживать эти файлы после проверки заголовка Authorization
, но я не думаю, что это эффективно, поскольку IIS намного лучше справляется с обслуживанием файлов, используя кеширование и т. д.
Я попытался создать и зарегистрировать новый HttpModule
, который проверил бы заголовок в BeginRequest
, и он отлично работает даже с виртуальными каталогами.
Однако я использую Приложения для разделения пулов приложений для обслуживания файлов и API. Если файлы хранятся в дочернем приложении (а не в виртуальной папке), то запрос не проходит через мой HttpModule (я могу проверить его по одному в каждом приложении, но это сильно усложняет, так как я не смогу использовать родительское приложение для проверки токен в одном месте)
Есть ли способ проанализировать заголовки в родительском приложении, когда файлы запрашиваются из дочерних приложений?
Я полностью упускаю суть, и есть более простой способ обеспечить обслуживание статических файлов с IIS при использовании пользовательской аутентификации? Мне не нужно передавать токены через пользовательский заголовок. При необходимости я могу сделать это с помощью куки или даже URL-параметра (только ssl, конечно).
Большое спасибо!