Ste*_*eve 2 asp.net sql-server-2008-r2 reporting-services ssrs-2008
我一直致力于SSRS与我们的Web应用程序的SSO集成,但我无法让它工作.我已经按照MSFT的Clife Green的例子进行了操作,仍然无法使其工作:
Reporting Services单点登录(SSO)身份验证 - 第1部分
Reporting Services单点登录(SSO)身份验证 - 第2部分
我已经浏览了互联网并搜索了MSDN文档但仍无法使其工作.我不断得到的错误是从示例代码中抛出GetWebResponse是这样的:
Authorization ticket not received by LogonUser
Run Code Online (Sandbox Code Playgroud)
我能够通过来回传递自己的cookie来检查它,同时忽略SSRS管理的cookie,但是我所做的所有调用都返回为Unauthenticated,因为我没有使用在SSRS中返回的SSRS会话令牌. LogonUser可以在响应中找到:
response.Headers["RSAuthenticationHeader"]
Run Code Online (Sandbox Code Playgroud)
但是,即使我的Web服务调用继续工作,报表管理器也无法正常工作并返回此错误:
StringStartsWith can't accept null parameters
Run Code Online (Sandbox Code Playgroud)
这是一个艰难的问题,并没有关于我遇到的问题的大量信息.有几件事是错的.
问题#1:报告管理器给了我这个错误:
StringStartsWith can't accept null parameters
Run Code Online (Sandbox Code Playgroud)
解决方案1:将<loginUrl>实现在SSRS自定义或窗体身份验证时,标签是必需的.
我不得不修改RSReportServer.Config文件以将我的登录页面添加到<loginUrl>标记中.一旦我添加了这个并实现了Login页面(参见示例中的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>
Run Code Online (Sandbox Code Playgroud)
问题#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>
Run Code Online (Sandbox Code Playgroud)
解决方案#2B: SQL Server 2008 R2有一个错误 - 服务补丁2修复了它.
我仍然得到无休止的重定向,因为SQL Server 2008 R2引入了它如何处理cookie的错误.简而言之,Report Manager的响应告诉您的应用程序响应标头中的SSRS身份验证cookie的名称:
string cookieName = response.Headers["RSAuthenticationHeader"]
Run Code Online (Sandbox Code Playgroud)
当我在这里设置断点时,我注意到cookie名称实际上是这样的:
sqlAuthCookie,sqlAuthCookie
Run Code Online (Sandbox Code Playgroud)
我做了一些搜索,发现了这个问题:SQL Server 2008 R2(11月CTP).表单身份验证在SSRS中不起作用
下载并安装SQL Server 2008 R2 SP2为我解决了这个问题,现在我的解决方案正常运行!
注意:您只需安装此代码而不是SP:SQL Server 2008 R2的累积更新包5
| 归档时间: |
|
| 查看次数: |
6152 次 |
| 最近记录: |