2

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

Reporting Services 单点登录 (SSO) 身份验证 - 第 1 部分

Reporting Services 单点登录 (SSO) 身份验证 - 第 2 部分

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

Authorization ticket not received by LogonUser

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

response.Headers["RSAuthenticationHeader"]

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

StringStartsWith can't accept null parameters
4

2 回答 2

5

这是一个艰难的过程,而且关于我遇到的问题的信息并不多。有几件事不对劲。

问题 #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)。表单身份验证在 SSRS 中不起作用

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

注意:您可以只安装它而不是 SP:SQL Server 2008 R2 的累积更新包 5

于 2012-10-19T15:16:55.820 回答
1

这里是配置表单身份验证的详细说明http://www.codeproject.com/Articles/675943/SSRS-2012-Forms-Authentication

于 2013-10-31T17:37:13.123 回答