SSRS 2017 Web门户表单身份验证访问问题

时间:2018-10-19 17:42:28

标签: reporting-services forms-authentication

我已经使用Microsoft示例(https://github.com/Microsoft/Reporting-Services/tree/master/CustomSecuritySample)实现了自定义身份验证(基于Forms身份验证)。

它是SSRS / SQL Server 2017的示例。就我而言,报告服务安装在Web测试服务器上,该服务器的域地址可从Intranet网络访问。数据库引擎安装在第二台服务器上。在Web服务器上,我们还安装了IIS。

除了访问Web门户以外,它看起来都可以正常工作。 访问Web门户(https://somedomain/reports时,即使我已经通过身份验证,我也始终会重定向到logon.aspx页面(User.Identity.IsAuthenticated返回true,而User.Identity.Name在logon_aspx.page_load上返回正确的用户名。 )。设置了表单身份验证cookie。通过身份验证后,我将从Page_Load返回,因为否则我将遇到无限重定向循环。

但是我注意到我可以使用报表服务器服务(即https://somedomain/ReportServer)访问报表:

enter image description here

我可以单击一个报告,它将显示出来。

此外,我可以使用SSMS和Forms身份验证连接到Reporting Services:

enter image description here

我可以访问Reporting Services属性。因此,我具有完全访问权限。 我正在使用具有所有权限的用户进行连接,即Authorization.IsAdmin始终为true(请参阅示例中的Authorization类)。此类实现IAuthorizationExtension。

但是我注意到,当访问Web门户时,根本没有调用Authorization.CheckAccess方法!因此,这可能是一个线索。仅调用AuthenticationExtension类中的方法。这是我在此类中的自定义日志:

调用了SetConfiguration。
调用了GetUserInfo。
GetUserInfo。设置用户身份。已验证:“ True”,键入:“ Forms”,用户名: 调用了SetConfiguration。
调用GetUserInfo2。
GetUserInfo。设置用户身份。已验证:“ True”,键入:“ Forms”,用户名: 调用了SetConfiguration。
调用了GetUserInfo。
GetUserInfo。设置用户身份。已验证:“ True”,键入:“ Forms”,用户名:

我已经为Reporting Services(也包括HTTP)打开了扩展日志记录,但是没有错误。

我在本地计算机上也有该示例的本地(开发人员)实现,并且运行良好。我可以访问Web门户(尽管我已经测试了从本地访问它的能力)。

因此,这仅在测试服务器上发生。不管是使用哪种协议,http和https都会发生这种情况。

我还比较了本地版本和测试版本的日志,但没有发现任何有趣的事情。

因此,即使设置了表单身份验证Cookie,/ reports请求也被重定向到logon.aspx:

enter image description here

如果我清除cookie,则在设置cookie之前,我收到的请求很少,但是对/ reports的最后一个请求应该成功了(因为它在本地env上),但就我而言,它重定向回到logon.aspx。 / p>

我已经花了两天时间解决此问题(尝试各种方法),但是没有运气。 有人可以帮我吗?

P.S。对不起,我的英语。

3 个答案:

答案 0 :(得分:0)

与您所描述的情况类似,尽管在此之前,一切都在2017 ssrs上起作用!上次发布时间为2018年9月12日,版本14.0.600.892,瞧瞧,它有效!我建议您尝试将SSRS 2017更新到最新版本。

答案 1 :(得分:0)

我遇到了同样的问题,解决方案是在Reporting Services配置管理器中更改Web Service URL和Report Manager URL,这些不应相同,并且必须访问的URL必须是您配置的URL作为报表管理员的网址,对不起,我的英语

答案 2 :(得分:0)

我已经解决了问题。我刚刚重新安装了SSRS,这有所帮助。因此,看来我的安装已损坏。