使用SSRS ASP.NET ReportViewer和Web服务进行Windows身份验证

使用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

目前我在使用SSR时遇到了一些问题。我有一个使用Windows身份验证的ASP.NET网站。这很好,我知道网站当前用户是当前登录的用户

此站点上有一个webforms ReportViewer。当我不设置凭据时,这可以正常工作。但是,在SQL Server中查看报告的执行日志时,用户名列为DOMAIN\MACHINE

我已尝试将ReportServerCredentials属性设置为如下类:

[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$,这是计算机。吼叫声