使用SSRS ASP.NET ReportViewer和Web服务进行Windows身份验证
目前我在使用SSR时遇到了一些问题。我有一个使用Windows身份验证的ASP.NET网站。这很好,我知道网站当前用户是当前登录的用户 此站点上有一个webforms ReportViewer。当我不设置凭据时,这可以正常工作。但是,在SQL Server中查看报告的执行日志时,用户名列为DOMAIN\MACHINE 我已尝试将ReportServerCredentials属性设置为如下类:使用SSRS ASP.NET ReportViewer和Web服务进行Windows身份验证,asp.net,ssrs-2008,reporting-services,Asp.net,Ssrs 2008,Reporting Services,目前我在使用SSR时遇到了一些问题。我有一个使用Windows身份验证的ASP.NET网站。这很好,我知道网站当前用户是当前登录的用户 此站点上有一个webforms ReportViewer。当我不设置凭据时,这可以正常工作。但是,在SQL Server中查看报告的执行日志时,用户名列为DOMAIN\MACHINE 我已尝试将ReportServerCredentials属性设置为如下类: [Serializable] public class ReportCredentials : IRep
[Serializable]
public class ReportCredentials : IReportServerCredentials
{
public bool GetFormsCredentials(out Cookie authCookie, out string userName, out string password, out string authority)
{
authCookie = null;
userName = null;
password = null;
authority = null;
return false;
}
public WindowsIdentity ImpersonationUser
{
get {
return (WindowsIdentity)HttpContext.Current.User.Identity;
}
}
public ICredentials NetworkCredentials
{
get {
return null;
}
}
}
然而,当执行这段代码时,我现在从web服务和报表服务返回401
发生什么事了?他们都在同一个领域。我想使用当前用户,而不是当前机器。如果我在报表服务器上运行报表,它将以正确的用户名列出,而不是从我的网站。而不是
return (WindowsIdentity)HttpContext.Current.User.Identity;
你可以试试
return WindowsIdentity.GetCurrent();
我在这里也遇到了麻烦,但最终还是成功了 机器1:客户端浏览器 机器2:Web服务器 机器3:SSRS+SQL Server 为了解决双跃点问题,我让IT部门为Machine2启用Active Directory委派,设置为“信任此计算机委派给任何服务(仅限Kerberos)” 在我的Web服务器上,我将Web.config文件修改为:
<authentication mode="Windows"/>
<identity impersonate="true"/>
在SSRS服务器上,我修改了rsreportserver.config文件,将
添加到
部分。我相信默认值是
。我把两个都留在那里,给我:
我重新启动了SSRS服务器,所有服务器都开始工作
希望这对别人有帮助 其实我在撒谎,一定是被缓存了。报告现在运行,但用户名记录为STAFF\UKBRISDDWRKA424$,这是计算机。吼叫声