我正在尝试使用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凭据? 在这种情况下,是否存在匿名身份验证的替代解决方案?
提前致谢
答案 0 :(得分:1)
您可以为处理安全性的SSRS提供自定义身份验证扩展。虽然这些有点复杂,但是支持匿名访问的自定义身份验证扩展程序是微不足道的。
以及此处的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)
.....
我希望这会有所帮助..谢谢