我正在使用 ReportViewer 使用 .Net 4.0在我的Windows WPF 应用程序上显示报告。这些报告部署在单独的< strong> SSRS 2008报表服务器而不是本地计算机。现在,我以下列方式传递服务器的凭据:
string userName = configClient.Settings.Get("UserName").Value.ValueXml.InnerText;
string password = configClient.Settings.Get("Password").Value.ValueXml.InnerText;
string domain = configClient.Settings.Get("Domain").Value.ValueXml.InnerText;
IReportServerCredentials irsc = new ReportViewerCredentials(userName, password, domain);
_reportViewer.ServerReport.ReportServerCredentials.NetworkCredentials = irsc.NetworkCredentials;
此外,如果有任何用途,我将对ReportViewer使用以下设置:
_reportViewer.ProcessingMode = ProcessingMode.Remote;
_reportViewer.ShowParameterPrompts = false;
_reportViewer.ServerReport.ReportServerUrl = new Uri(Properties.Settings.Default.ReportServer);
_reportViewer.ServerReport.ReportPath = Properties.Settings.Default.Reports;
我正在使用配置文件来保存和检索服务器访问的凭据,但我不认为这是一种安全的方式。我想以安全的方式实现这一点,我不需要从用户或配置文件中获取凭据。本地计算机和服务器都在同一网络上。
我不知道怎么做,这可以通过冒充来完成,我只是猜测,因为我对安全性和模仿没有太多了解。此外,如果可以,我可以获得一个样本,或者可以是一篇文章的链接,通过该链接我可以完成这项工作。
核心思想是避免在客户端上存储用户名和密码。我搜索了解决方案,但我得到的内容非常模糊。
请不要关闭这个帖子,因为这是一个悬而未决的问题,但这对我来说很重要,因为我正在接近截止日期并且一次处理太多事情。很抱歉给您带来不便。
答案 0 :(得分:0)
我找到了一种根本不通过凭据的方法,但仍然可以从Reports Server中检索报告,但不是没有帮助。
我已使用网址http://localhost/Reports/Pages/Folder.aspx在报告管理器中配置了新的角色分配。转到“属性”选项卡,然后添加“新角色分配”并添加“所有人”,并为其提供所需的权限。
这样,我就不需要从客户端传递任何用于ReportViewer的凭据。此外,它还可用于配置所选用户的访问权限。