SSRS 2017 Web门户窗体身份验证访问问题

问题描述 投票:0回答:3

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

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

它看起来除了访问Web Portal之外它工作正常。当访问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(请参阅示例中的授权类)。该类实现了IAuthorizationExtension。

但是我注意到在访问门户网站时根本没有调用Authorization.CheckAccess方法!所以这个迁移是一个线索。仅调用AuthenticationExtension类中的方法。这是我从这个类的自定义日志:

调用SetConfiguration。 调用GetUserInfo。 GetUserInfo。设置用户身份。 Authenticated:'True',type:'Forms',用户名:Invoked SetConfiguration。 调用GetUserInfo 2。 GetUserInfo。设置用户身份。 Authenticated:'True',type:'Forms',用户名:Invoked SetConfiguration。 调用GetUserInfo。 GetUserInfo。设置用户身份。经过身份验证:'True',输入:'Forms',用户名:

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

我也在我的本地机器上有本地(开发人员)实现这个示例,它工作正常。我可以访问门户网站(虽然我测试过从本地访问它)。

所以这只发生在测试服务器上。这种情况发生在http和https(无论使用哪种协议)。

我还比较了从本地版本到测试版本的日志,但我没有发现任何有趣的东西。

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

enter image description here

如果我清除cookie,我会收到更多的请求,直到设置cookie但是对/ reports的最后一个请求应该成功(因为它在本地环境中)但在我的情况下它会重定向回logon.aspx。

我已经花了两天时间来解决这个问题(尝试各种各样的事情),但没有运气。有人可以帮帮我吗?

附:对不起我的英语不好。

reporting-services forms-authentication
3个回答
0
投票

有一个类似你描述的情况,虽然在此之前一切都在2017年ssrs!推出最新更新于9/12/2018,版本14.0.600.892,并且看,它的工作原理!!我建议您尝试将SSRS 2017更新到最新版本。


0
投票

我遇到了同样的问题,解决方案是在报告服务配置管理器中更改Web服务URL和报告管理器URL,这些不应该相同,您必须访问的URL必须是您配置为报告管理器的URL网址,对不起我的英文


0
投票

我已经解决了这个问题。我刚重新安装SSRS,这有帮助。所以它看起来我的安装以某种方式被破坏了。

© www.soinside.com 2019 - 2024. All rights reserved.