Как сделать аутентификацию отчета в веб отчете FastReport .NET

13.10.2019

Каждый раз, когда мы формируем веб отчет, ajax запрос приводит к выполнению хэндлеров: WebResource.axd и FastReport.Export.axd. Файлы с расширением axd используются в приложениях ASP .NET для получения ресурсов из библиотек dll: изображения, javascript и стили.

В итоге мы получаем HTML файл отчета. Но, так как отчет сгенерирован и находится в кеше IIS, то зная сгенерированный ID отчета (который генерируется при запросе) злоумышленнику не сложно получить его. И это потенциальная проблема безопасности, если отчет содержит конфиденциальные данные. Выходом из этой ситуации может быть аутентификация пользователя. То есть если отчет вызван конкретным пользователем, то получить его экземпляр может только он.

Мы могли бы проверять http запрос для аутентификации пользователя, но это невыход. Злоумышленник всегда может подменить запрос. Лучшим решением будет аутентификация пользователя по сессии. До недавнего времени такого функционала FastReport.Net не предоставляла. Но в версии 2019.3.13 появилось событие для аутентификации ajax ресурсов отчета, загружаемых через asp handler в WebReport.

Событие WebReport.CustomAuth выполняется перед показом отчета. В этот момент вы можете проверить пользователя в сессии. Вот пример использования нового события:

1
2
3
4
5
6
7
8
9
10
11
12
13
public ActionResult Index()
 {
 Session["User"] = "Father Brown";
...
 webReport.CustomAuth += WebReport_CustomAuth;
...
 }
...
 private void WebReport_CustomAuth(object sender, CustomAuthEventArgs e)
 {
 e.AuthPassed = (e.Context.Session["User"] as string) == "Father Brown";
 }
...

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

Таким образом, мы можем существенно повысить безопасность данных, внедрив аутентификацию отчета.

4 октября 2023

Как из приложения ASP.NET Core сформировать отчет с использованием FastReport.Core.Skia

Рассказываем как сформировать отчет на Windows и Linux с использованием FastReport.Core.Skia и приватного NuGet сервера.
22 марта 2023

Создание PDF отчета в JetBrains Rider (C#) на «Альт Рабочая станция К» 10

В этой статье мы взглянем на платформу .NET в «Альт Рабочая станция К» 10 и создадим отчет, который можно экспортировать в PDF.
14 февраля 2023

Как настроить веб-сервер Apache2 для FastReport .NET

Запускаем веб-сервер Apache2 в операционной системе Linux для FastReport .NET и .NET 5 с помощью нескольких простых команд.