SSRS ReportViewer 401 (Учетная запись компьютера) доменмашина$

#asp.net #iis #reporting-services #reportviewer

Вопрос:

Прежде чем я перейду к этому вопросу, позвольте мне сначала объяснить архитектуру, с которой я работаю.

  • DB-Сервер — SQL Server 2019, Windows 2019
  • SSRS-Сервер — SSRS 2019, Windows 2019
  • Веб-сервер — IIS v10, Windows 2019

Все серверы находятся в одном домене.

Приложение, предоставляющее отчет, написано в ASP.NET использование элемента управления rsweb:ReportViewer.

Требование: Мне нужна возможность доступа к отчетам из ASP.NET приложение, использующее учетную запись машинного уровня.

Текущая ошибка: Запрос не выполнен со статусом HTTP 401: Несанкционированный.

То, что я сделал до сих пор…

  • Добавлена учетная запись компьютера в SSRS. Я дал ему разрешения на всех уровнях: настройки сайта, папки, отчеты. Как только я заставлю его работать, я отключу права, но сейчас мне нужно, чтобы он работал. Эта учетная запись машинного уровня является веб-сервером. Я предполагаю, что любой доступ с веб-сервера к SSRS-серверу будет предоставлен.

введите описание изображения здесь

  • Изменил идентификатор пула приложений на LocalSystem. Да, это может нарушить наименьшие привилегии, но опять же, на данный момент я рассматриваю это как POC. Я также пробовал NetworkService.

введите описание изображения здесь

  • Web.config. Возможно, мне нужно что-то сделать здесь, чтобы это сработало. Я пытался использовать олицетворение личности, но безуспешно, но, возможно, я не использовал его в сочетании с другой настройкой. Когда у меня установлен режим аутентификации Windows, идентификатор Windows, используемый ASP.NET является ОРГАНОМ NTIUSR. Удаление этой строки дает мне ПОЛНОМОЧИЯ NTСЕТЕВАЯ СЛУЖБА в качестве удостоверения Windows. Я бы подумал, что учетная запись СЕТЕВОЙ СЛУЖБЫ будет предоставлена; однако это все равно приводит к ошибке 401.

введите описание изображения здесь

  • Изменен файл «rsreportserver.config» (C:Program ФайлыСлужбы отчетов Microsoft SQL ServerSSRSСервер отчетовrsreportserver.config)

введите описание изображения здесь

  • ASP.NET Настройка средства просмотра отчетов:
      ReportViewer1.ServerReport.ReportPath = rc.report_ssrs_path;
     ReportViewer1.ServerReport.ReportServerUrl = new System.Uri(rc.report_ssrs_url);
    
     SqlConnectionStringBuilder conString = new Database().conBuilder;
     List<ReportParameter> parameters = new List<ReportParameter>();
     parameters.Add(new ReportParameter("ConString", conString.ConnectionString));
     ReportViewer1.ServerReport.SetParameters(parameters);
    
     DataSourceCredentials dsc = new DataSourceCredentials();
     dsc.Name = ReportViewer1.ServerReport.GetDataSources()[0].Name;
     dsc.UserId = conString.UserID;
     dsc.Password = conString.Password;
     ReportViewer1.ServerReport.SetDataSourceCredentials(new DataSourceCredentials[] {
         dsc });
    
     ReportViewer1.ShowCredentialPrompts = false;
     ReportViewer1.ServerReport.Refresh();   
     

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

Комментарии:

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