我正在尝试在 SSRS 2008(不是 R2)中实现一些自定义安全代码,以允许表单身份验证而不是 Windows 身份验证。我的解决方案基于 Microsoft 示例代码,并设法使其大部分工作正常。我唯一遇到问题的地方是登录到实际的报表管理器 URL 时。
问题 1
使用 URL 时,http://localhost/Reports_MSSQL2008/它不会选取UILogon.aspx我复制到/Pages文件夹中的页面(按照 Microsoft 示例的说明)。我修改了 ReportManager 文件夹中的 web.config 以包含以下内容:
<authentication mode="Forms">
<forms loginUrl="UILogon.aspx"
name="sqlAuthCookie"
timeout="60"
slidingExpiration="true"
path="/" />
</authentication>
Run Code Online (Sandbox Code Playgroud)
我尝试更改路径以匹配 aspx 文件的确切路径,但仍然没有乐趣!
问题 2
由于上述问题,我尝试通过 URL 进入 UILogon 和 ReportManager http://localhost/Reports_MSSQL2008/Pages/UILogon.aspx。这是因为我可以进入我的自定义代码(UILogon.aspx.cs 和 IAuthorisation / IAuthentication 代码),我可以看到它执行以下操作:
问题是,当 response.redirect 返回到 GetUserInfo() 方法时,HttpContext.Current.User 为空,并且不再有 cookie。因此,返回一个空的 IIdentity(不能将它设置为其他任何东西!!)并且 SSRS 抛出错误......
Microsoft.ReportingServices.Diagnostics.Utilities.AuthenticationExtensionException: …