Как настроить авторизацию пользователей для динамически создаваемых ресурсов в веб-приложении ASP.NET с использованием проверки подлинности с помощью форм? - PullRequest
0 голосов
/ 29 марта 2011

Предположим, некоторые пользователи входят в мое веб-приложение. Они проходят проверку подлинности (как нечто отличное от анонимного пользователя), поэтому они могут получить доступ к любому ресурсу в каталоге. Раздел system.web / authorization файла web.config настроен на запрет доступа анонимным пользователям, например:

<system.web><authorization>
  <deny users="?" />
</authorization></system.web>

На самом деле, насколько я понимаю, это защищает только файлы, доступ к которым осуществляется через систему ASP.NET. Если я добавлю туда файл JPG, он будет доступен каждому без аутентификации / авторизации. Чтобы обеспечить защиту всех файлов, для этого есть другой раздел:

<system.webServer><security><authorization>
  <add accessType="Deny" users="?" />
</authorization></security><system.webServer>

Конечно, теперь, когда кто-то пытается получить доступ к файлу JPG, он не перенаправляется на страницу входа. Вместо этого они получают неприятную ошибку HTTP 401.2 - неавторизовано.

Теперь предположим, что пользователь вызывает создание файла на сервере. Как в контексте этой сложной схемы проверки подлинности и авторизации с помощью форм я могу гарантировать, что только веб-браузер этого пользователя может получить доступ к файлу через его URL-адрес? Например, я должен изменить файл web.config? Если да, то нужно ли делать это вручную или это можно сделать с помощью кода? Будет ли его изменение часто вызывать прерывание / перезапуск приложения?

Ответы [ 2 ]

2 голосов
/ 29 марта 2011

Вы не можете этого гарантировать. При аутентификации и авторизации форм вы должны быть явными, перечисляя конкретных пользователей или роли. Нет возможности указать это динамически.

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

0 голосов
/ 29 марта 2011

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

...