Я реализовал пользовательскую аутентификацию (на основе аутентификации по формам) с использованием образца Microsoft (https://github.com/Microsoft/Reporting-Services/tree/master/CustomSecuritySample).
Это образец для SSRS / SQL Server 2017. В моем случае службы отчетов установлены в веб-тестесервер с адресом домена, доступным из сети интрасети. Ядро базы данных установлено на втором сервере. На веб-сервере также установлен IIS.
Похоже, что он работает нормально, за исключением доступа к веб-порталу. При доступевеб-портал (https://somedomain/reports) Я всегда перенаправлен на страницу logon.aspx, даже если я уже аутентифицирован (User.Identity.IsAuthenticated возвращает true, а User.Identity.Name возвращает правильное имя пользователя в logon_aspx.page_load).Установлен файл cookie проверки подлинности с помощью форм. Когда я аутентифицируюсь, я возвращаюсь из Page_Load, потому что в противном случае я бы получал бесконечный цикл перенаправления.
Но я заметил, что могу получить доступ к отчетам с помощью службы сервера отчетов (т.е. https://somedomain/ReportServer):
Я могу щелкнуть отчет, и он будет отображен.
Кроме того, я могу подключиться к службам Reporting Services с использованием аутентификации SSMS и Forms:
И я могу получить доступ к свойствам служб Reporting Services.Так что у меня полный доступ.Я подключаюсь, используя пользователя, у которого есть все разрешения, т.е. Authorization.IsAdmin всегда имеет значение true (см. Класс Authorization в примере).Этот класс реализует IAuthorizationExtension.
Но я заметил, что при доступе к веб-порталу метод Authorization.CheckAccess вообще не вызывается!Так что этот миг будет ключом.Вызываются только методы из класса AuthenticationExtension.Вот мои пользовательские журналы из этого класса:
Вызванный SetConfiguration.
Вызванный GetUserInfo.
GetUserInfo.Настройка личности пользователя.Аутентифицировано: 'True', тип: 'Forms', имя пользователя: вызвано SetConfiguration.
Вызвано GetUserInfo 2.
GetUserInfo.Настройка личности пользователя.Аутентифицировано: 'True', тип: 'Forms', имя пользователя: вызвано SetConfiguration.
Вызвано GetUserInfo.
GetUserInfo.Настройка личности пользователя.Аутентифицировано: «True», тип: «Forms», имя пользователя:
Я включил расширенное ведение журнала для служб Reporting Services (включая HTTP), но ошибки нет.
У меня также есть локальная (разработчик) реализация этого примера на моей локальной машине, и она отлично работает.Я могу получить доступ к веб-порталу (хотя я проверил его доступ к нему с локального).
Так что это происходит только на тестовом сервере.И это происходит для http и https (независимо от того, какой протокол используется).
Я также сравнил журналы из локальной версии с тестовой версией, но я не нашел ничего интересного.
Итак/ отчеты о запросах перенаправляются в logon.aspx, даже если установлен файл cookie проверки подлинности форм:
Если я очищаю файлы cookie, я получаю еще несколько запросов доcookie установлен, но последний запрос к / reports должен быть успешным (как в локальном окружении), но в моем случае он перенаправляет обратно на logon.aspx.
Я потратил два дня на устранение этой проблемы.(пробуя разные вещи) но безуспешно.Кто-нибудь может мне помочь с этим?
PS Извините за мой английский.