Я реализовал настраиваемую безопасность в своих службах отчетов 2016, и она отображает страницу входа в систему после ввода URL-адреса для служб отчетов в строке URL-адреса браузера (либо отчеты, либо сервер отчетов)
Я использую следующий код для передачи учетных данных, когда я использую код БЕЗ моего расширения безопасности, он работает и выглядит так
ICredentials _executionCredentials;
CredentialCache myCache = new CredentialCache();
Uri reportServerUri = new Uri(ReportServerUrl);
myCache.Add(new Uri(reportServerUri.GetLeftPart(UriPartial.Authority)),
"NTLM", new NetworkCredential(MyUserName, MyUserPassword));
_executionCredentials = myCache;
когда я использую код С расширением безопасности, он не работает и выглядит так
ICredentials _executionCredentials;
CredentialCache myCache = new CredentialCache();
Uri reportServerUri = new Uri(ReportServerUrl);
myCache.Add(new Uri(reportServerUri.GetLeftPart(UriPartial.Authority)),
"Basic", new NetworkCredential(MyUserName, MyUserPassword));
_executionCredentials = myCache;
и я получаю исключение, говорящее: «Ответ на этот запрос POST не содержит заголовка« местоположение ». Это не поддерживается этим клиентом». когда я действительно использую эти учетные данные
Является ли «базовый» неправильным вариантом?
Кто-нибудь сделал это?
Обновление 1. Оказывается, мой SSRS ожидает файл cookie авторизации, который я не могу передать (согласно скрипачу, файла cookie нет)
HttpWebRequest request;
request = (HttpWebRequest)HttpWebRequest.Create("http://mylocalcomputerwithRS/Reports_SQL2016/api/v1.0");
CookieContainer cookieJar = new CookieContainer();
request.CookieContainer = cookieJar;
Cookie authCookie = new Cookie("sqlAuthCookie", "username:password");
authCookie.Domain = ".mydomain.mylocalcomputerwithRS";
if (authCookie != null)
request.CookieContainer.Add(authCookie);
request.Timeout = -1;
HttpWebResponse myHttpWebResponse = (HttpWebResponse)request.GetResponse();