Mam obecnie kilka problemów z korzystaniem z usługi SSRS. Mam witrynę ASP.NET, która korzysta z uwierzytelniania systemu Windows. To działa dobrze i wiem, że strona internetowa bieżącego użytkownika jest aktualnie zalogowanym użytkownikiem.Uwierzytelnianie systemu Windows za pomocą usługi SSRS ASP.NET ReportViewer i usługi WWW
Na tej stronie znajduje się formularz Report Viewer. Działa to dobrze, gdy nie ustawiam referencji. Jednak patrząc na protokół wykonania raportów w SQL Server, nazwa użytkownika jest wymieniona jako DOMAIN \ MACHINE.
Próbowałem ustawiać właściwość ReportServerCredentials do klasy jak poniżej:
[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;
}
}
}
Jednak, gdy ten kod wykonuje teraz otrzymać 401 powrotem z usługi internetowej i sprawozdania usługa.
Co się dzieje? Oboje znajdują się w tej samej domenie. Chcę użyć bieżącego użytkownika, a nie bieżącego komputera. Jeśli uruchomię raport na serwerze raportów, wyświetli się pod prawidłową nazwą użytkownika, ale nie z mojej strony.
Yeh Próbowałem to pierwszy, ale wciąż mam 401 :( – Lloyd
Właściwie kłamać, musi być buforowane. Raport działa teraz, ale nazwa jest rejestrowana jako \t PERSONEL \ UKBRISDDWRKA424 $ co jest maszyna. Grrr. – Lloyd