Autenticação do Windows com o SSRS ReportViewer do ASP.NET e serviço da Web
Estou tendo alguns problemas usando o SSRS atualmente. Eu tenho um site ASP.NET que usa a autenticação do Windows. Isso funciona bem e eu sei que o usuário atual do site é o usuário atualmente conectado.
Neste site é um ReportViewer webforms. Isso funciona bem quando eu não definir credenciais. No entanto, olhando para o log de execução dos relatórios no SQL Server, o nome de usuário é listado como DOMAIN \ MACHINE.
Eu tentei definir a propriedade ReportServerCredentials para uma classe como a abaixo:
[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;
}
}
}
No entanto, quando esse código é executado, agora recebo um 401 de volta do serviço da Web e do serviço de relatório.
O que está acontecendo? Ambos estão no mesmo domínio. Eu quero usar o usuário atual e não a máquina atual. Se eu executar o relatório no servidor de relatórios, ele será listado com o nome de usuário correto, mas não do meu site.