【问题标题】:Unble to Configure SSRS Custom Authentication Extension with SQL Server 2008 R2无法使用 SQL Server 2008 R2 配置 SSRS 自定义身份验证扩展
【发布时间】:2012-10-19 15:16:55
【问题描述】:

我一直致力于将 SSRS 与我们的 Web 应用程序进行 SSO 集成,但我无法让它工作。我遵循了 MSFT 的 Clife Green 的这个例子,但仍然无法让它工作:

Reporting Services Single Sign On (SSO) Authentication - Part 1

Reporting Services Single Sign On (SSO) Authentication - Part 2

我搜索了互联网并搜索了MSDN 文档,但仍然无法正常工作。示例代码中的 GetWebResponse 中抛出了我不断收到的错误:

Authorization ticket not received by LogonUser

我能够通过来回传递我自己的 cookie 并检查它来使其工作,同时忽略 SSRS 管理的 cookie,但我将进行的所有调用都返回为未经身份验证,因为我没有使用 SSRS 会话令牌在 LogonUser 中返回,可以在此处的响应中找到:

response.Headers["RSAuthenticationHeader"]

但是,即使我的 Web 服务调用继续工作,报告管理器也没有工作并返回此错误:

StringStartsWith can't accept null parameters

【问题讨论】:

    标签: asp.net sql-server-2008-r2 ssrs-2008 reporting-services


    【解决方案1】:

    这是一个艰难的过程,没有太多关于我遇到的问题的信息。有几处出错了。

    问题 #1: 报告经理给了我这个错误:

    StringStartsWith can't accept null parameters
    

    解决方案 #1: 在 SSRS 中实现自定义或表单身份验证时需要 <loginUrl> 标签。

    我必须修改 RSReportServer.Config 文件以将我的登录页面添加到 <loginUrl> 标记。一旦我添加了这个并实现了登录页面(请参阅示例中的 UILogin.aspx),我不再收到 StringStartsWith 错误。

    文件位置:*C:\Program Files\Microsoft SQL Server\MSRS10_50.MSSQLSERVER\Reporting Services\ReportServer\RSReportServer.Config*

    <UI>
        <ReportServerUrl></ReportServerUrl>
        <PageCountMode>Estimate</PageCountMode>
        <CustomAuthenticationUI>
            <loginUrl>[YourUrl]</loginUrl>
            <UseSSL>False</UseSSL>
            <PassThroughCookies>
                 <PassThroughCookie>[YourSSOCookieName]</PassThroughCookie>
            </PassThroughCookies>
        </CustomAuthenticationUI>
    </UI>
    

    问题 #2: 报告管理器和我的登录页面无休止地相互重定向。

    这个问题是由另外两个问题引起的。

    解决方案 #2A: SSRS 报告管理器需要知道用于其授权票证的 cookie 的名称。

    首先,我必须修改报表服务器的 Web.Config 并告诉它用于授权票证的 cookie 的名称。我在下面的示例中使用了sqlAuthCookie

    文件位置:*C:\Program Files\Microsoft SQL Server\MSRS10_50.MSSQLSERVER\Reporting Services\ReportServer\Web.Config*

    变化:

          <authentication mode="Forms">
          <forms loginUrl="[YourUrl]" name="sqlAuthCookie" requireSSL="false" />
      </authentication>
    

    解决方案 #2B: SQL Server 2008 R2 有一个错误 - 服务补丁 2 修复了它。

    由于 SQL Server 2008 R2 在处理 cookie 的方式中引入了一个错误,我仍然收到了无休止的重定向。简而言之,来自 Report Manager 的响应会告诉您的应用程序响应标头中的 SSRS 身份验证 cookie 的名称:

    string cookieName = response.Headers["RSAuthenticationHeader"]
    

    当我在这里设置断点时,我注意到 cookie 名称实际上是这样的:

    sqlAuthCookie,sqlAuthCookie
    

    我做了一些搜索,发现了这个问题:SQL Server 2008 R2 (November CTP). Forms Authentication not working in SSRS

    下载并安装 SQL Server 2008 R2 SP2 为我解决了这个问题,现在我的解决方案有效!

    注意:您可以只安装它而不是 SP:Cumulative Update package 5 for SQL Server 2008 R2

    【讨论】:

    • 请告诉我,您已经研究过使用 ASP.NET Identity 在 ASP.NET MVC(5 或 6)上的 SSRS 2014 用户身份验证问题?六个月来,我一直在寻找信息,但无济于事:(
    【解决方案2】:

    【讨论】:

      猜你喜欢
      • 2016-07-24
      • 2011-06-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多