3

Мой вопрос больше связан с безопасностью его реализации, чем только с техническими вопросами.DataSource через Параметр + Безопасность

Я разработал все отчеты и находится на сервере отчетов. Они используются приложением с помощью ReportViewer Control в ASP.NET.

Учитывая, что эти отчеты могут иметь разные источники данных, я создал параметр в DataSource в отчете и отправил приложение connectionString в качестве параметра в отчет.

До сих пор все в порядке, однако, именно здесь возникает мой вопрос. Поскольку я трачу ConnectionString, у которого есть пользователь и пароль для параметра, у меня не будет здесь недостатка безопасности?

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

ответ

7

Возможно, Expression-Based Connection Strings поможет здесь?

Документов есть довольно ясный пример, то есть строка соединения, аналогичная:

="data source=" & Parameters!ServerName.Value & ";initial catalog=AdventureWorks 

Это позволит вам по-прежнему передавать параметр для определения источника данных, но она также позволяет хранить учетные данные отдельно, таким образом, вы не обязательно должны передавать какие-либо сведения о безопасности при вызове отчета.

Добавлено после комментария:

Ниже приведен пример отчета с Expression на основе строки подключения.

enter image description here

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

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

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

Второе редактирование:

В приведенном выше примере, Parameters!ServerName.Value действительно параметр отчета, вы бы просто создать его, как и любой другой. В зависимости от того, как запускаются ваши отчеты, вы можете сделать его скрытым параметром и обработать фактическое значение, отправленное в коде; это просто вопрос реализации и действительно до вас.

Для строк соединения на основе выражения источник данных должен быть сохранен в отчете, а его строка соединения определена во время выполнения.

Таким образом, вы можете создавать все, что вам нужно, на основе одного или нескольких параметров - это просто строковое значение, которое вы создаете, чтобы вы могли сделать все, что захотите, в соответствии с вашими потребностями; вы можете указать его на любую комбинацию серверов/баз данных. Просьба уточнить, не отвечает ли это на ваш вопрос.

+0

Но где я ставлю учетные данные? – PookPook

+0

Они хранятся на уровне источника данных; см. приведенное выше изменение. –

+0

Хорошо, хорошо. Но «Parameters! ServerName.Value» должны быть объявлены в отчете? И как мне установить источник данных для отчета, так что давайте получить источник данных, который находится в serverreport? Связь между ними, я не могу понять. – PookPook