使用匿名身份验证的替代方式设置SSRS服务器

时间:2018-02-08 15:11:38

标签: sql-server iframe reporting-services

我正在尝试使用SSRS报告服务器设置VM。 必须可以从另一个网站/服务器上的iframe访问报表服务器上的SSRS报告。

当我在外部计算机浏览器上访问报表服务器URL时,我必须输入VM用户的凭据。 在以下链接中,它表示不支持匿名身份验证:https://technet.microsoft.com/en-us/library/cc281310(v=sql.105).aspx

我目前唯一的解决方案是在URL中输入凭据,例如“http:userLogin:userPassword@myDomain.com/ReportServer”。 但是,此解决方案会在iframe代码中公开我的VM用户。

如何设置SSRS服务器,以便从任何计算机的浏览器访问SSRS报告,而无需输入VM凭据? 在这种情况下,是否存在匿名身份验证的替代解决方案?

提前致谢

2 个答案:

答案 0 :(得分:1)

您可以为处理安全性的SSRS提供自定义身份验证扩展。虽然这些有点复杂,但是支持匿名访问的自定义身份验证扩展程序是微不足道的。

请参阅https://docs.microsoft.com/en-us/sql/reporting-services/security/authentication-with-the-report-server

以及此处的SSRS 2016示例:https://github.com/Microsoft/Reporting-Services/tree/master/CustomSecuritySample2016

您还可以使用自己的HTTP处理程序或IIS ARR将流量代理到SSRS。如果手动执行,您可以将SSRS配置为使用HTTP Basic auth,并在从应用程序发出HTTP请求时添加基本的auth标头。

答案 1 :(得分:0)

我必须找出答案,并且对我有用的解决方案 它将基本身份验证设置为SSRS,并将其设置为 ReportServer

的文件:rsreportserver.config
<AuthenticationTypes> <RSWindowsBasic/> </AuthenticationTypes>
--------------------------------------------------------------

**and into the code:**






   String url="http://<ipreportserver>:8080/ReportServer?/MyReport&rc:Parameters=false&rs:Command=Render&rs:Format=PDF";        
       client.DefaultRequestHeaders.Accept.Clear();        
       client.DefaultRequestHeaders.Accept.Add(new 
         System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));

       var byteArray = Encoding.ASCII.GetBytes("myuser:myuserPwd");

       client.DefaultRequestHeaders.Authorization = new 
          System.Net.Http.Headers.AuthenticationHeaderValue("Basic", 
          Convert.ToBase64String(byteArray));

      try
      {
            httpResponse = await client.GetAsync(url);
           if (httpResponse.IsSuccessStatusCode)
    .....

我希望这会有所帮助..谢谢