我有一个通过SQLMemberShipProvder使用基于角色的安全性的ASP.NET站点。
是否可以使用我现有的MembershipProvider角色提供对SSRS报告的互联网访问?
例如,如果我有一个角色SupportPersonRole,我是否只允许该角色的人使用某些报告?
文档说SQL 2008 R2使用基本身份验证到本地安全机构。但是,如果SSRS只能为SSRS内容提供自己的基本身份验证登录,我不确定如何有机会授权使用MembershipProvider角色。
ASP.Net页面需要处理报告参数提示,因此这似乎意味着“远程”模式适合于获得此功能。
令人困惑的部分是SSRS(在远程模式下)拥有自己的角色安全凭证,它与基于ASP.Net角色的安全性分开。那么你如何避免在两个地方管理安全?
答案 0 :(得分:4)
如果您在自己的网站中包含报告查看器控件,则可以限制哪些人可以看到此页面,以及可以通过您的网站前端运行哪些报告。
然后可以保护您到SSRS服务器(从Web服务器到它)的连接,以便只有您的站点才能访问这些报告。
答案 1 :(得分:4)
您还可以将LocalReport
呈现给您选择的输出。如果您不需要与控件一样多的选择,这可能是一个不错的选择。
// Controller Action
public ActionResult GetReport(ReportParameters foo)
{
string mimeType;
var stream = foo.RenderReport(out mimeType);
return new FileStreamResult(stream, mimeType);
}
class ReportParameters {
public Stream RenderReport(out string mimeType)
{
var localReport = new LocalReport();
// ... TODO: Set up report data sources render call out variales, etc.
byte[] renderedBytes;
renderedytes = localReport.Render(
reportType,
deviceInfo,
out mimeType,
out encoding,
out fileNameExtension,
out streams,
out warnings);
return new MemoryStream(renderedBytes);
}
}