Передайте идентификатор Windows в отчет SSRS Пользовательский источник данных

77
8

Я новичок в мире отчетов SSRS и сталкиваюсь с некоторыми проблемами, которые пытаются подключиться к моему DataSource.

Я создал новый источник данных со следующими свойствами

    Использовать соединение, включенное в мой отчет Тип подключения: Microsoft SQL Server Строка подключения: [@ConnectionString], где @ConnectionString - это имя моего параметра отчета.

Вкладка "Учетные данные"

    Запрос учетных данных (флажок "Использовать как учетные данные Windows" не установлен)

Я использую этот источник данных для предварительного заполнения моего раскрывающегося списка отчетов с доступными значениями в БД. Теперь, сценарий, я собираюсь передать строку соединения с моей страницы aspx на средство просмотра отчетов SSRS.

Выдержка из кода ниже:

this.rptViewer.ProcessingMode = ProcessingMode.Remote; 
this.rptViewer.ServerReport.ReportServerUrl = new Uri(reportServerUrl);//https
this.rptViewer.ServerReport.ReportPath = reportPath;
// this can have either UserName & Password specified or have IntegratedSecurity=SSPI
connStrBuildr.ConnectionString = connStr;
ReportParameter reportParameter = new ReportParameter("ConnectionString", connStrBuildr.ConnectionString, false);
this.rptViewer.ShowCredentialPrompts = false;
this.rptViewer.ServerReport.SetParameters(reportParameter);

if (!connStrBuildr.IntegratedSecurity) { // for SQL Auth
this.rptViewer.ServerReport.SetDataSourceCredentials(new List<DataSourceCredentials>() {
new DataSourceCredentials() {
Name = "Custom_DataSource",
UserId = connStrBuildr.UserID,
Password = connStrBuildr.Password } });
}
else // for Windows Auth
{
// Created a new class as per some suggestion on internet, to connect to ReportServer which inturn will pass window identity to SQL Server,
// but even this didn't work - had no way to exact password . MIND BLOWING STUFF !!

//rptViewer.ServerReport.ReportServerCredentials = new CustomReportCredential(username,password,domain)

}
this.rptViewer.ServerReport.Refresh();

Мое требование: если в моей строке подключения указано имя пользователя и пароль, то они должны использоваться для подключения к SQL (Custom_DataSource).

Если указано IntegratedSecurity = SSPI, для подключения к SQL (Custom_DataSource) следует использовать проверку подлинности Windows.

Я попытался создать производный класс

CustomReportCredential:Microsoft.Reporting.WebForms.IReportServerCredentials

но даже это не сработало. Модификация web.config для сохранения олицетворения (true/false) и многих подобных. Ни один из них не сработал.

Существующий сценарий: если я изменяю отчет для использования встроенной системы безопасности Windows, все мои строки подключения, связанные с проверкой подлинности Windows, выполняются должным образом, но не работают для тех, у которых указано UserName и Password.

И наоборот, если я изменяю отчет для использования запроса для учетных данных (флажок "Использовать как учетные данные Windows" не установлен).

Ожидается:

    Как я могу разрешить оба метода (Windows/SQL) подключения к DataSource?

Это может быть тривиальный сценарий, но я не могу найти подходящее решение для него.

Любая помощь или указатели будут оценены наиболее высоко. Благодарю.

спросил(а) 2017-04-17T19:05:00+03:00 3 года, 2 месяца назад
1
Решение
-4

Я нашел, что это ищет другой ответ о подобном сценарии. Тем не менее, я устанавливаю rptViewer.ServerReport.ReportServerCredentials в учетную запись Windows, которая имеет доступ к отчету. Без этого не имеет значения, что я поставляю в виде строки соединения, приложение даже не может получить доступ к отчету. Я вижу, что это старо, но это была твоя проблема? Мне просто интересно, может ли строка соединения подвергаться риску компрометации, если она передана в отчет с использованием параметров, а также, если есть лучший вариант, чем хранить учетную запись AD и пароль в web.config для того, чтобы ReportViewer должен иметь доступ к отчету.

ответил(а) 2017-10-20T21:33:00+03:00 2 года, 8 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема