В IIS6, как обеспечить аутентифицированный доступ к статическим файлам на удаленном сервере - PullRequest
0 голосов
/ 09 февраля 2010

У нас есть библиотека ZIP-файлов, которую мы хотели бы сделать доступными для загрузки на сайте ASP.NET.

Файлы хранятся на устройстве NAS, доступном из веб-фермы.

Вот наша первоначальная стратегия:

  1. Сопоставить виртуальный каталог IIS с общим диском по пути / zipfiles
  2. Пользователи могут загружать zip-файлы при наличии URL-адреса

Однако, если пользователи делятся ссылками на файлы, их может скачать любой. Вместо этого мы хотели бы использовать проверку подлинности на основе форм ASP.NET на нашем сайте для проверки запросов пользователей перед началом передачи файла.

Несколько проблем: Запрос на zip-файл обрабатывается IIS, а не ASP.NET. Так что это не подлежит проверке подлинности форм. Кроме того, мы не хотим, чтобы ASP.NET обрабатывал запрос , поскольку он использует поток ASP.NET и не масштабируется для загрузки больших файлов. Таким образом, настройка dll asp.net для обработки * .zip запросов невозможна.

Есть идеи по этому поводу?

Одна идея, которую мы бросили, заключается в следующем: Первоначальный запрос на загрузку будет обработчиком Ashx. Этот обработчик после аутентификации сгенерирует маркер загрузки, который сохраняется в базе данных. Затем пользователь перенаправляется в файл с токеном, добавленным в QueryString (например, /files/xyz.zip?token=123456789). Плагин ISAPI будет использоваться для проверки токена. Кроме того, токен истекает через x количество времени. Есть мысли по этому поводу? Я не реализовал плагин ISAPI, поэтому я не уверен, будет ли это работать.

Я бы хотел избежать пользовательского кодирования, поскольку безопасность - это проблема, и я бы предпочел использовать проверенное временем решение.

Ответы [ 2 ]

0 голосов
/ 01 марта 2010

Я прочитал и понимаю вашу озабоченность по поводу использования обработчика для управления статическими файлами, но если вы используете асинхронный обработчик, то вы не будете блокировать.

Я думаю, что вы можете получить результаты, которые вы ищете, по справедливой цене.

0 голосов
/ 09 февраля 2010

Проверка подлинности с помощью форм не может выполняться без ASP.NET.

Если вы вообще не хотите использовать ASP.NET, вы можете определить NTFS-разрешение для файла и создать учетные записи домена для ваших пользователей. Это быстро станет кошмаром.

Чтобы справиться с большими загрузками в ASP.NET, вы можете взглянуть на Comet . В основном это IHttpHandler, но вам нужно использовать другой ThreadPool (не ASP.NET). Я предлагаю взглянуть на Smart Thread Pool .

Я совместил несколько месяцев назад, чтобы создать приложение для регулирования скорости загрузки, и теперь он работает очень плавно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...