Проверка подлинности Windows с использованием SSRS ASP.NET ReportViewer и веб-службы
У меня сейчас несколько проблем с использованием SSRS. У меня есть веб-сайт ASP.NET, который использует проверку подлинности Windows. Это прекрасно работает, и я знаю, что текущий пользователь сайта является текущим пользователем.
На этом сайте есть веб-форма 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;
}
}
}
Однако, когда этот код выполняется, я теперь получаю 401 обратно от веб-службы и службы отчетов.
Что происходит? Они оба находятся в одном домене. Я хочу использовать текущего пользователя, а не текущий компьютер. Если я запускаю отчет на сервере отчетов, он выводится под правильным именем пользователя, но не с моего веб-сайта.